#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=10;
int n,k,a[N],b[N],vis[N],p[N],flag;
void dfs(int x){
if(flag)return;//找到就return
if(x==n+1){//找到的第一个符合的序列就是答案(因为下的遍历
//是从1依次从小到大搜索
for(int i=1;i<=k;i++){
cout<<p[i]<<" ";
}
flag=1;
return;
}
for(int i=1;i<=n;i++){//dfs精髓
if(vis[i])continue;
if(b[x]<=a[i]){
vis[i]=1;
p[x]=i;
dfs(x+1);
vis[i]=0;//回溯,精髓
}
}
}
void solve() {
cin>>n>>k;
for(int i=1; i<=n; i++) {
cin>>a[i];
}
for(int i=1; i<=k; i++) {
cin>>b[i];
}
dfs(1);
if(!flag){
cout<<"-1";
}
}
signed main() {
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int t=1;
//cin>>t;
while(t--) {
solve();
}
}
P8838 [传智杯 #3 决赛] 面试(dfs思想不错)
于 2023-05-27 08:23:07 首次发布