
分析
1.要找到编号最小的上级,只能按照行从小到大遍历,这里省去索引为0的那一行,保证索引即为编号。
2.对于for的第三层循环,原本想用flag作为标志,后来发现用k可以代替,因为如果不符合要求(跳出循环),k的值绝对不会=m,如果符合要求,那k的值会=m然后检测不满足k<m从而跳出循环。
3.在没有上级仓库时输出0,即在for第二层循环全部执行完且第三层循环存在全部k!=m时才输出0。
代码
#include<iostream>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;//仓库个数,位置编码维数
int arr[1001][10]={0};
for(int i=1;i<=n;i++)
{
for(int j=0;j<m;j++)
{
cin>>arr[i][j];
}
}
// int flag=0;
int k=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
//flag=1;
for(k=0;k<m;k++)
{
if(arr[i][k]>=arr[j][k])
{
break;
//flag=0;
}
}
if(k==m)
{
cout<<j<<endl;
break;
}
if((k!=m)&&(j==n))
{
cout<<0<<endl;
break;
}
}
}
return 0;
}