思路
数据范围不大,就用一个二维数组假设 个仓库, 维。然后:
-
对于每个仓库,遍历所有其他的仓库,看是否满足上级的条件。
-
如果满足条件且编号更小,那么就更新上级仓库的编号。
-
最后输出每个仓库的上级仓库编号,如果无上级则输出 。
注意:一个仓库不能成为它自己的上级。
AC Code
#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[1000][10];//假设最大1000个仓库,10维
int n,m;
signed main(void){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>a[i][j];
for(int i=0;i<n;i++){
int ans=0;
for(int j=0;j<n;j++){
//自己不能成为自己的上级
if(i==j) continue;
bool flag=true;//标记
for(int k=0;k<m;k++){
if(a[j][k]<=a[i][k]){
flag=false;//不满足上级条件
break;
}
}
if (flag and (ans==0 or j+1<ans)) ans=j+1;//满足条件,更新编号
}
cout<<ans<<endl;
}
exit(0);
}
暂无评论