题目传送门
思路
这一题的范围 2 ≤ n ≤ 300 2\le n \le 300 2≤n≤300, O ( n 3 ) O(n^3) O(n3) 的复杂度也是可以过掉这道题的。
我们看一下思路,如果这张贺卡是原来的朋友寄过来的,自己发给自己或发不出去的话,继续循环。否则输出答案,直接退出。
代码
#include<bits/stdc++.h>
using namespace std;
int n,tmp;
int card[1005][1005],vis[1005];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>card[i][j];
}
}
for(int i=1;i<=n;i++){
cin>>tmp;
vis[tmp]=i;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(card[i][j]==i){
continue;
}
bool flag=false;
for(int k=1;k<card[i][j];k++){
if(vis[k]<vis[card[i][j]]&&k!=i){
flag=true;
}
}
if(flag){
continue;
}
cout<<card[i][j]<<" ";
break;
}
}
return 0;
}