洛谷P8838 [传智杯 #3 决赛] 面试(害 刚开始,没想到用dfs 呜呜呜)
这道题其实不算难,但是我没有想到用dfs,害 ,,难受。
其次这个题,我看了大佬的代码,找到答案后直接exit(0),直接退出,而不是利用return一层层返回。
其实这个题 就是利用dfs求出每种情况,然后对符合条件的情况进行挑选就可以了(害 ,我还是太菜了,呜呜呜呜呜,莫名的伤感起来了……)
害 小灰灰加油加油! 下一题!!!!!!!!!!!!!
本题的代码如下:
#include<iostream> using namespace std; int a[10],b[10],d[10]; bool c[10]; int n,k; void dfs(int m){ if(m == n){ for(int i = 0;i < m;i++) cout<<d[i]<<" "; exit(0); } for(int i = 0;i < k;i++){ if(b[m] <= a[i] && !c[i]){ c[i] = true; d[m] = i+1; dfs(m+1); c[i] = false; d[m] = 0; } } } int main(){ cin>>n>>k; for(int i = 0;i < n;i++) cin>>a[i]; for(int j = 0;j < k;j++) cin>>b[j]; dfs(0); if(d[n-1] == 0) cout<<"-1"; return 0; }