洛谷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;
}

posted @ 2023-01-03 19:53  啥都不会的灰太狼  阅读(97)  评论(0编辑  收藏  举报