首页 > 代码库 > HDU 2743 Quicksum

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也没必要用....囧

HDU 2743 Quicksum