个人思路:
建立两个数组,分别把字符和转换后的数字放入不同数组内,
然后累加就完事了!
=====================================================================
做完后,发现好多大佬们用二维数组写的,
看了之后,
很懵.......
有位大佬的思路和我的差不多,
就是有个步骤没看明白,
#include <algorithm> #include <iostream> #include <cstdlib> #include <cstdio> using namespace std; char str[81]; int score[81]; int main() { int n; scanf("%d",&n); while (n --) { scanf("%s",str); score[0] = (str[0] == 'O'); for (int i = 1 ; str[i] ; ++ i) { score[i] = score[i-1]+1; if (str[i] == 'X') score[i] = 0; } int sum = 0; for (int i = 0 ; str[i] ; ++ i) sum += score[i]; printf("%d\n",sum); } return 0; }
这是那位大佬的码,
score[0] = (str[0] == 'O');
这一步,不是很理解!!!
希望有大佬指点!
蟹蟹
AC:
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; int score[81]; char str[81]; int main(){ int n; cin>>n; while(n--){ scanf("%s",str); int len = strlen(str); memset(score, 0, sizeof(score)); for (int i = 1; i <= len;i++) { score[i]=score[i-1]+1; if(str[i-1]=='X') score[i]=0; } int sum = 0; for(int i = 1;i <= len;i++){ sum+=score[i]; //cout << score[i] << " "; } //cout << endl; cout<<sum<<endl; } return 0; }
我的就不用过多介绍了。
if(str[i-1]=='X')
其中,这一步的 i-1
要格外地注意一下,
其余的都很直白~.~