示例正确,提交不成功,怎么回事???
程序代码:
#include char a[9][9]; int panduan(int i,int j) { int x,y,three,qq; three=qq=0; for(x=i-1;x<=i+1;x++) { if(x<0) continue; for(y=j-1;y<=j+1;y++) { if(j<0) continue; if(a[x][y]=='3') three++; else if(a[x][y]=='Q') qq++; } } if(three>qq) return 1; else return 0; } int main() { int i,j,three,qq,z; scanf("%d",&z); while(z--) { three=qq=0; for(i=0;i<8;i++) scanf("%s",a[i]); for(i=0;i<8;i++) for(j=0;j<8;j++) if(panduan(i,j)==1) a[i][j]='3'; else a[i][j]='Q'; for(i=0;i<8;i++) for(j=0;j<8;j++) if(a[i][j]=='3') three++; else qq++; if(three>qq) printf("3\n"); else if(three<QQ) printf("Q\n"); else printf("D\n"); } return 0; }如果你每天挂 QQ,并且也使用 360 安全卫士,那就一定知道不久前腾讯做的艰难决定。QQ 和 360 的大战只是耍了几天嘴皮子,就在“有关部门”的干预下平息了。干打雷不下雨,咱这种闲人岂能过瘾。
请你来实现一个程序,看看 360 与 QQ PK 到底结果如何。
比赛的场地是一个 8x8 的方阵,QQ 和 360 分别派各自的员工占据其中的位置(员工数量不需要相同,毕竟不是在下中国象棋)。如下图所示:
x01234567
y --------
0|QQQQQQQQ
1|3333333Q
2|3QQQQQ3Q
3|3Q333Q3Q
4|3Q3Q3Q3Q
5|3Q3QQQ3Q
6|3Q33333Q
7|3QQQQQQQ
其中 Q 代表 QQ 员工,3 代表 360 员工。比如场地 y = 3, x = 2 的位置是 360 员工。
战斗开始后,每个位置的参赛者都要检查周围八个方向(加上自己,一共九个位置),如果己方的实力(人数)不输于敌方,则下一刻这个位置依旧由己方控制;否则,在下一刻这个位置就会被敌方攻占!比如上面说的 y = 3, x = 2 位置,它周围的形势是:
x123
y ---
2|QQQ
3|Q33
4|Q3Q
有 6个 QQ 员工,之后 3 个 360 员工,所以下一刻这个位置会被 QQ 占领,3 变成 Q。按照这样的方法,一直持续下去,直到整个战场的状态趋于稳定,即任何位置都不再有变化。这时候,统计一下战场上哪一方的人数多即最终胜利者。
Input
输入数据的第一行是一个整数 n(0 < n < 100),表示有 n 场比赛。
每一场比赛有 8行,并且每行有 8列。
Output
输出这场比赛的赢家:
如果 QQ 获胜,输出“Q”。
如果 360 获胜,输出“3”。
如果 QQ 和 360 打和,即人数一样多,则是“有关部门”获胜了,输出“D”。
Sample Input
3
3333QQQQ
3333QQQQ
3333QQQQ
3333QQQQ
3333QQQQ
3333QQQQ
3333QQQQ
3333QQQQ
QQQQQQQQ
3QQQQQQQ
33QQQQQQ
333QQQQQ
3333QQQQ
33333QQQ
333333QQ
3333333Q
33333333
3QQQQQQ3
3Q3333Q3
3Q3QQ3Q3
3Q3QQ3Q3
3Q3333Q3
3QQQQQQ3
33333333
Sample Output
D
Q
3