思路:输入一个整数n,下面有n行n列,a[i][j]表示第i个车和第j个车进行碰撞时哪一个会被撞翻,0表示都不会被撞翻,1表示第i个车会被撞翻,i车是坏的;2表示第j个车会被撞翻,j车是坏的;3表示两个都会撞翻,表示两个都是坏的。用for循环看看输入的数是对应的哪一种情况。
#include<stdio.h> #include<string.h> #define N 1010 int main() { int n,i,j; int a[N][N],b[N]; while(~scanf("%d",&n)) { int t=n; for(i=0; i<=n-1; i++) { b[i]=i+1; } for(i=0; i<=n-1; i++) { for(j=0; j<=n-1; j++) { scanf("%d",&a[i][j]); } } for(i=0; i<=n-1; i++) { for(j=0; j<=n-1; j++) { if(a[i][j]==1) { if(b[i]!=0) { b[i]=0; t--; continue; } else { continue; } } else if(a[i][j]==2 ) { if(b[j]!=0) { b[j]=0; t--; continue; } else { continue; } } else if(a[i][j]==3) { if(b[i]==0&&b[j]!=0 ) { b[j]=0; t=t-1; continue; } else if(b[i]!=0 && b[j]!=0) { b[i]=0; b[j]=0; t=t-2; continue; } else { continue; } } } } if(t<=0) { printf("0\n"); } else { printf("%d\n",t); for(i=0; i<=n-1; i++) { if(b[i]!=0 && i==n-1) { printf("%d\n",b[i]); } else if(b[i]!=0 && i!=n-1) { if(t==1) { printf("%d\n",b[i]); } else printf("%d ",b[i]); } } } } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/sh_tomorrow/article/details/47358121