标签:
2 5 00100 10000 01001 11101 11000 5 01111 00000 01000 01100 01110
Case #1: Yes Case #2: No
#include<stdio.h> #include<string.h> char p[2001][2001]; int s[2001],m; void TO(int n) { int flag=0; int i,j,k; for(i=0;i<n;i++) { for(j=0;j<n;j++) if(s[j]==0) break; if(j==n) { flag=1; break; } s[j]=-1; for(k=0;k<n;k++) if(p[j][k]=='1'&&s[k]!=0) s[k]--; } printf("Case #%d: ",++m); if(flag) printf("Yes\n"); else printf("No\n"); } int main() { int t,n; m=0; scanf("%d",&t); while(t--) { memset(s,0,sizeof(s)); scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%s",p[i]); for(int j=0;j<n;j++) { if(p[i][j]=='1') s[j]++; } } TO(n); } return 0; }
再贴一个代码:
#include<stdio.h> #include<string.h> char p[2001][2001]; int s[2001],m; void TO(int n) { int flag=0,i,j,k,w=1000000,h; for(i=0;i<n;i++) { for(j=0;j<n;j++) if(s[j]==0) { w=j;break; } else w=1000000; if(w==1000000) { printf("Case #%d: ",++m); printf("Yes\n"); return ; } s[w]=-1; for(k=0;k<n;k++) if(p[w][k]=='1') s[k]--; } printf("Case #%d: ",++m); printf("No\n"); return ; } int main() { int t,n; m=0; scanf("%d",&t); while(t--) { memset(s,0,sizeof(s)); scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%s",p[i]); for(int j=0;j<n;j++) { if(p[i][j]=='1') s[j]++; } } TO(n); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/l15738519366/article/details/47666355