【发布时间】:2021-12-30 16:12:50
【问题描述】:
我必须检查矩阵中每列等于 1 的元素是否有行和列不相等。当我尝试所有解决方案时,它适用于行 == 列。我尝试对每一列进行求和,然后检查它是否等于 6 行,因为我希望列中的所有元素都等于 1。
这是我的输入和输出任务的屏幕截图: task is here as picture
任务描述
在火车时刻表中,火车的路线由一系列位描述(1 - 如果火车停在车站,0 - 如果不是)。
编写一个程序,给出位序列,其中只有那些位为 1,所有火车都停止。输入
标准输入的第一行 包含列车数量 (1≤T≤100) 和站数(1≤S≤100)。 接下来的 T 行 包含代表每列火车路线的序列: S 位以空格分隔, 其中 1 表示火车(行)停在给定的车站(列), 0 表示火车不停。
输出
标准输出的第一行应该包含 由空格分隔的 S 位序列, 其中 1 表示所有火车都停站, 0 表示并非所有列车都停止。
示例
输入
6 8 1 1 1 1 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 0 1 1 1 1 0 1 0 0 1输出
1 0 0 0 1 0 0 0
这是我的 C++ 代码:
#include <iostream>
#include <climits>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int trainStops[n][m];
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
cin>>trainStops[i][j];
}
}
int sum =0;
int output[m]={0};
for (int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
if(trainStops[j][i]==1){
output[j]+=trainStops[j][i];
}
}
}
cout<<"==============="<<endl;
for(int i=0; i<m; i++)
{
cout<<output[i]<<" ";
}
return 0;
}
【问题讨论】:
-
危险的堆栈杀手:
int trainStops[n][m];。在典型的 PC 上,如果m和n是几百个,程序自动存储将被耗尽,导致通常所说的 - 等待它! - 堆栈溢出。这只是可变长度数组在标准 C++ 中不合法的原因之一。 -
想一想其中 1 表示所有列车都停止,0 表示并非所有列车都停止。以及这与
output[j]+=trainStops[j][i];产生的数字有何关系 -
1-对我来说,解决任务的语言无关紧要,因为我会理解它是如何工作的 c 和 c++ 对我来说是相同的,因为你没有使用语言中的预定义函数libs,但非常感谢您的回答,我同意您的看法 2-对于“M”和“N”最大和最小无关紧要,因为我知道如何做测试用例来定义 maxM 和 maxN 做到这一点一个while循环或者如果一个条件或捕获第二条评论的错误非常感谢你,我完全同意你
-
对于评论号 3 3- 对我来说,我试图得到每一列的总和,我们知道如果火车在所有车站停止意味着该列在每个车站都有 1,总和将是数字of station 是行数,然后使用 for 循环和 if 条件来检查 output[i]==8 cout 1 not cout 0 我希望我能澄清我的答案谢谢你的提问
-
这不仅仅是关于你。这个问题必须对那些关注的人有用,否则它不会保留在网站上,也不太可能得到答案。