【发布时间】:2014-07-06 17:35:41
【问题描述】:
我不知道为什么,但程序没有进入 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;
}
【问题讨论】:
-
您是否尝试在循环之前打印出 N 或 l 以查看它们是否有问题?
-
读入数组时不会初始化
a -
学习调试:在代码中的某些点设置断点(或写入输出)。检查这些位置的变量并尝试手动遵循程序逻辑。消除代码,直到它工作。放回代码并查明您在哪里得到意外结果。
-
我试图打印其他东西而不是 N 或 I ..
-
是的,p 在初始化时实际上是 -1。谢谢大家的帮助!!