<pre name="code" class="cpp">原问题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4841。 注意格式。。。 #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> int main() { int m,n,count,i,j; char *p; while(scanf("%d%d",&n,&m)!=EOF) { p=(char*)malloc(2*n*sizeof(char)); memset(p,'G',2*n*sizeof(char));//先都模拟成好人 count=0,j=0,i=-1;//count用来记录坏人的个数 while(count<n) { while(j<m) { i++;//i用来记录总体走的步数 i=i%(2*n); if(p[i]=='G') j++; } p[i]='B'; count++; j=0;//由于j记录的是当前步数,所以每次又要归零 } for(i=0;i<2*n;i++) { printf("%c",p[i]); if((i+1)%50==0) printf("\n");} if((2*n)%50!=0) printf("\n"); printf("\n"); free(p); } return 0; }