1 条题解
-
0
矩阵列全1检测 - 解题思路
这段代码用于检测多个矩阵中是否存在至少一个全1的列,并输出检测结果。
算法核心思路
-
输入处理:
- 持续读取矩阵的行数(NUM2)和列数(NUM1),直到遇到两个0表示输入结束
- 为每个矩阵动态创建二维数组存储数据
- 逐行逐列读取矩阵元素值(0或1)
-
全1列检测:
- 对每个矩阵的每一列进行检查
- 如果发现某列的所有元素都为1,则标记该矩阵存在全1列
- 使用标志位flag记录当前列的检查结果
- 使用t作为整个矩阵的检测结果标记
-
结果存储与输出:
- 将每个矩阵的检测结果(t值)存入结果向量jg
- 最后统一输出所有检测结果,1对应"yes",0对应"no"
关键特点
- 动态输入处理:支持连续处理多个不同尺寸的矩阵
- 提前终止优化:发现全1列后立即停止后续列的检查
- 批量结果输出:先收集所有结果再统一输出
- 简单高效:时间复杂度为O(m×n),其中m为行数,n为列数
#include <iostream> #include <vector> using namespace std; int main() { vector<int> jg; while(1) { int NUM1,NUM2; cin>>NUM1>>NUM2; if((NUM1==0)&&(NUM2==0)) { break; } int a[NUM2][NUM1]; for(int i=0;i<NUM2;i++) { for(int j=0;j<NUM1;j++) { cin>>a[i][j]; } } int t=0; for(int i=0;i<NUM1;i++) { int flag=1; for(int j=0;j<NUM2;j++) { if(a[j][i]==0) { flag=0; break; } } if(flag==1) { t=1; break; } } jg.push_back(t); } for(int i=0;i<jg.size();i++) { if(jg[i]==1) { cout<<"yes"<<endl; }else { cout<<"no"<<endl; } } return 0; }
-
- 1
信息
- ID
- 1864
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 6
- 已通过
- 2
- 上传者