问题是:
SF面馆特派员发现了一扇“智慧之门”,要开启它必须解决N个谜题。特派员手下有M个人,特派员知道每个人能够解决哪些谜题。但他的手下们行踪不定,他想知道他至少碰到多少个手下并把这些人一起叫过去,一定可以保证开启这扇智慧之门,也就是说,求一个最小的Q,使得任意Q个人在一起都可以解决所有谜题。
Program Name: wisdom
Input
第一行 两个整数M、N。
接下来M行 每行为一个N位的个01串,表示一个手下能否解决某一个问题,0表示不能够解决,1表示能够解决。
Output
一个整数,表示最少的手下个数。如果无论来多少个手下都不能够打开智慧之门,输出"No answer!"(不包括引号)。
Sample
Input |
Output |
5 4 1111 1001 0111 1011 1101 |
3 |
Limit
M<=100;
N<=12。
Hint
如果只有两个手下,由于第二个和第四个手下都不能解决谜题2,所以不一定能够打开智慧之门,而任意三个手下在一起都可以打开,所以输出3。
我的代码是:
#include <stdio.h>]
#include<iostream.h>
int main()
{int i,j,M=5,N=4,k=0,p=0;
char a[100][100];
scanf("%d %d",&M,&N);
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
scanf("%c",&a[i][j]);}
i=0;j=0;
for(i;i<N;i++)
{for(j;j<M;j++)
{if(a[j][i]-48==0)
p++;}
if(p>0)
{k++;
p=0;}
}
printf("%d",k);
system("pause");
return 0;
}
我的代码哪里出了问题啊,还有能不能帮我解决这个问题啊