Take it easy

来源:互联网 发布:网络浏览器有哪些 编辑:程序博客网 时间:2024/05/16 11:14

Take it easy

时间限制:1000 ms  |  内存限制:65535 KB
难度:0
描述
小蜗牛是一名ACMer,他特别想加入校ACM队,为此他开始废寝忘食的刷题。小蜗牛不是神,也会因为做不对题目而烦恼。假设小蜗牛做对一道题,他的愉悦值会加一;如果做错一题,他的愉悦值会减一。给定一个初始的愉悦值N(0<=N<=10),当小蜗牛的愉悦值为0时他就会停止做题,转身去做其他的事情。但是他想知道自己这一天做了多少题,现在请你告诉他结果。
输入
有多组数据。
每组数据第一行给定一个N,表示小蜗牛的初始愉悦值。
第二行给定10个数字,表示有10个做题结果。
其中做题结果只会是1或者-1(1表示做对一题,-1表示做错一题)。
输出
每组数据请输出一行,输出小蜗牛做了多少题。
样例输入
21 1 1 1 1 -1 -1 -1 -1 -14-1 -1 -1 -1 -1 1 1 1 1 1
样例输出
104

这是我见过的非常简单的一道题,但是我花了好长的时间才做对

先贴代码

 

#include <stdio.h>/*这道题主要是n=0的情况不容易考虑到还有没有注意到n和下面一组数据是一个整体*/int main(){int n, a[10];while(scanf("%d", &n) != EOF) //输入多组数据{for(int i = 0; i < 10; i++) //循环输入十个表示做题对错的数值scanf("%d",&a[i]);//把for循环放在前面是因为n和下面的一组数是一个整体,即使n=0if(n == 0)              {  printf("0\n");continue;    }    if(n > 0 && n <= 10)    {for(int i = 0; i < 10; i++){n = n + a[i];if(n <= 0){printf("%d\n", i+1);break;}if(i == 9)//当循环结束的时候说明作对了十道题{printf("%d\n", 10);break;}}}  }   return 0;}

给出另一个人的一个算法

 

 #include<stdio.h>int main(){int i,j,sum,n,temp;while(scanf("%d",&sum)!=EOF){int count=0;//定义此变量来统计次数for(i=1;i<=10;i++){scanf("%d",&temp);if(sum>=0)//只有愉悦度大于等于0时才+sum+=temp;if(sum>=0)  count++;//次数加一}printf("%d\n",count);}return 0;}


不解释

原创粉丝点击