没啥内容,字符串题,题目稍微表达的乱了一点,看懂了就很容易了 好久没做了,结果忘记注释掉方便自己的输入重定向,不停的WA,很崩溃,还好最后发现了,呼呼 //1998812 2009-09-19 17:06:01 Accepted 1042 C++ 0 176 immortality #include<stdio.h> #include<string.h> #define MAXC 100 int k1,k2,k3; char inm[MAXC]; char outm[MAXC]; char groupid[MAXC]; char g[4][MAXC]; int len,len1,len2,len3; void GenerateGroup() { int i; len = strlen(inm); for(i=0;i<len;i++) { if(inm[i]>='a' && inm[i]<='i') { groupid[i] = 1; g[1][len1++] = inm[i]; } else if(inm[i]>='j' && inm[i]<='r') { groupid[i] = 2; g[2][len2++] = inm[i]; } else { groupid[i] = 3; g[3][len3++] = inm[i]; } } g[1][len1] = '#CONTENT#'; g[2][len2] = '#CONTENT#'; g[3][len3] = '#CONTENT#'; } void RightRotate(char array[],int n,int k) { int i; char bak[MAXC]; strcpy(bak,array); k = k%n; for(i=0;i<n;i++) { array[i] = bak[(i - k + n)%n]; } } void OutputResule() { int i,s[4]={0}; for(i=0;i<len;i++) { outm[i] = g[groupid[i]][s[groupid[i]]++]; } outm[len] = '#CONTENT#'; printf("%s/n",outm); } void solve() { GenerateGroup(); if(len1>0) RightRotate(g[1],len1,k1); if(len2>0) RightRotate(g[2],len2,k2); if(len3>0) RightRotate(g[3],len3,k3); OutputResule(); } int main() { freopen("test.txt","r",stdin); freopen("out.txt","w",stdout); while(scanf("%d%d%d",&k1,&k2,&k3)!=EOF) { if(k1==0 && k2==0 && k3==0) break; int i; for(i=0;i<MAXC;i++) { inm[i]= 0; outm[i]= 0; groupid[i] = 0; g[0][i] = 0; g[1][i] = 0; g[2][i] = 0; g[3][i] = 0; } len = 0; len1 = 0; len2 = 0; len3 = 0; scanf("%s", inm); solve(); } fclose(stdin); fclose(stdout); return 0; }