我不知道为什么,但程序没有进入FOR循环。 我对编程是全新的,所以请避免任何错误。 非常感谢。
这个问题来自其中一个编码网站::
您将获得参加ACM-ICPC世界总决赛的N人名单。他们每个人都精通某个主题,或者他们不是。找出2人团队可以了解的最大主题数。还要了解有多少团队可以知道最大数量的主题?
输入格式
第一行包含由单个空格分隔的两个整数N和M,其中N表示人数,M表示主题数。 N行跟随。 每行包含一个长度为M的二进制字符串。在此字符串中,1表示第i个人知道某个特定主题,0表示第i个人不知道该主题。
输出格式
在第一行,打印2人团队可以知道的最大主题数。 在第二行,打印可以知道最大主题数的团队数量。
约束
2 ≤ N ≤ 500 1 ≤ M ≤ 500
示例输入
4 5 10101 11100 11010 00101
样本输出
5 2
这是我的代码::
#include<iostream>
using namespace std;
int main(){
int N,M;
cin>>N>>M;
if(N>=2 && N<=500 && M>=1 && M<=500){
int x= (N*(N-1))/2;
int i,j,k;
int Topic[x];
for(i=0;i<x;i++){
Topic[i]=0;
}
int y= N*M;
int a;
char Array[y];
while(N--){
for(i=0;i<M;i++){
cin>>Array[a];
a++;
}
}
int count;
int d=0;
int l=N-1;
// This FOR LOOP ..
**for(int p=0;p<l;p++){
for(int q=p+1;q<N;q++){
count=0;
for(k=0;k<M;k++){
int temp=k+(q*M);
int temp1=k+(p*M);
if(Array[temp]+Array[temp1]!=0){
count+=1;
}
}
Topic[d]=count;
d++;
}
}**
int max=Topic[0];
int counter=0;
for(i=0;i<x;i++){
if(max>Topic[i]){
max=Topic[i];
counter=1;
}
else if(Topic[i+1]=Topic[i]){
counter+=1;
}
}
cout<<max<<endl;
cout<<counter;
}
return 0;
}
答案 0 :(得分:4)
您有一个将N
计为0
的循环:
while (N--) {
// ...
}
然后将l
设为N - 1
,即-1
:
int l = N - 1;
然后您的for
循环想要在p < l
时运行。 p
最初为0
,l
最初为-1
,因此循环永远不会运行:
for ( int p = 0; p < l; p++ ) {
// ...
}