程序书海

蓝杯四十六

2018-02-12  本文已影响14人  逍遥_9353

算法训练 最长字符串 

时间限制:1.0s  内存限制:512.0MB

提交此题   

  求出5个字符串中最长的字符串。每个字符串长度在100以内,且全为小写字母。

样例输入

one two three four five

样例输出

three

#include "stdio.h" 

#include "string.h" 

int main() 

    char arr[5][101]; 

    int i,max ; 

    int n[5]; 

    for(i=0;i<5;i++) 

    { 

        scanf("%s",arr[i]); 

        n[i]=strlen(arr[i]); 

    } 

    max=0 ; 

    for(i=1;i<5;i++) 

    { 

        if(n[max]<n[i]) 

        { 

            max=i ; 

        } 

    } 

    printf("%s\n",arr[max]); 

    return 0 ; 

思路分析:

一、定义变量:5个字符串(二维数组),最大,字符串(一维数组);

二、for语句循环输入字符串;

三、for语句循环,if语句判断找出最长字符串;

四、输出最长字符串。

算法提高 盾神与砝码称重 

时间限制:1.0s  内存限制:256.0MB

提交此题   

问题描述

  有一天,他在宿舍里无意中发现了一个天平!这个天平很奇怪,有n个完好的砝码,但是没有游码。盾神为他的发现兴奋不已!于是他准备去称一称自己的东西。他准备好了m种物品去称。神奇的是,盾神一早就知道这m种物品的重量,他现在是想看看这个天平能不能称出这些物品出来。但是盾神稍微想了1秒钟以后就觉得这个问题太无聊了,于是就丢给了你。

输入格式

  第一行为两个数,n和m。

  第二行为n个数,表示这n个砝码的重量。

  第三行为m个数,表示这m个物品的重量。

输出格式

  输出m行,对于第i行,如果第i个物品能被称出,输出YES否则输出NO。

样例输入

4 2

1 2 4 8

15 16

样例输出

YES

NO

样例输入

4 1

10 7 1 19

6

样例输出

YES

数据规模和约定

  1<=n<=24, 1<=m<=10.

#include<iostream> 

#include<algorithm> 

#include<string.h> 

#include<cmath> 

using namespace std; 

int n,m,flag; 

int w[25],k[25]={0}; 

bool cmp(const int &x, const int &y) 

    return x > y; 

void dfs(int s,int x) 

    if (flag){ //退出条件 

        return ; 

    } 

    if (s == 0) 

    { 

        flag = 1; 

        return ; 

    } 

    if (abs(s)>k[x]){//必然不行 

        return ; 

    } 

    for (; x<n; x++) 

    { 

        //两种情况 

        dfs(s-w[x],x+1); 

        dfs(s+w[x],x+1); 

    } 

int main() 

    int s; 

    cin>>n>>m; 

    for (int i=0; i<n ;i++) 

    { 

        cin>>w[i]; 

    } 

    sort(w,w+n,cmp); 

    //集合砝码和 

    for (int i=n-1; i>=0; i--) 

    { 

        k[i] = w[i]+k[i+1]; 

    } 

    while (m--) 

    { 

        cin>>s; 

        flag = 0; 

        dfs(s,0); 

        if (flag){ 

            cout<<"YES"<<endl;           

        } else{ 

            cout<<"NO"<<endl; 

        } 

    } 

    return 0; 

思路分析:

一、定义变量:两个数,砝码重量,物品重量,循环次数;

二、输入两个数;

三、For语句循环输入砝码重量;

四、调用函数,集合砝码和;

五、根据题意:当物品能被称出,输出YES否则输出NO。

上一篇下一篇

猜你喜欢

热点阅读