HDU 2743 Quicksum

http://acm.hdu.edu.cn/showproblem.php?pid=2734

思路挺简单的题目却折腾了好久,刚开始想把字符一个一个读进一个数组里,但却对开多大的数组产生了疑惑(后来看大神们的代码,普遍数组都开10000),便想避开,用c++的string直接cin,可是cin读字符串不把空格读进去,这道题需要计算空格。后来想到用gets(),这个函数呀....gets(char),虽然是读入字符,但只要开个字符数组,就能读字符串了...还是学艺不精呀,走了那么多弯路。

还是把自己的代码放上来做个警戒

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     char s;
 6     scanf("%c",&s);
 7     while(s!='#')
 8     {
 9       int i=1,sum=0;
10       while(s!=10)
11       { 
12             if(s>='A'&&s<='Z')            
13               sum+=(i++)*(s-64);             
14             if(s==' ')
15              i++;  
16              scanf("%c",&s);  
17       }
18         printf("%d\n",sum);
19         scanf("%c",&s); 
20     }    
21 }


大神代码

 1 #include <string.h>
 2 #include <stdio.h>
 3 
 4 int main()
 5 {
 6     char str[10000];
 7     int len,i,a[26],sum;
 8     for(i = 0;i<26;i++)
 9     {
10         a[i] = i+1;
11     }
12     while(gets(str))
13     {
14         if(strcmp(str,"#") == 0)
15         break;
16         len = strlen(str);
17         sum = 0;
18         for(i = 0;i<len;i++)
19         {
20             if(str[i]>='A' && str[i]<='Z')
21             sum+=(i+1)*a[str[i]-'A'];
22         }
23         printf("%d\n",sum);
24     }
25 
26     return 0;
27 }

自己感觉这个代码里的a数组挺多余的....strcmp也没必要用....囧

posted on 2014-07-24 11:18  薛定谔的熊猫  阅读(148)  评论(0编辑  收藏  举报

导航