4 条题解
-
0
using namespace std; int a[6][6];//描述每个同学对书的喜好 int book[6];//描述每本书的状态 0为没有被挑走了 1为被挑走 int c[6],sum=0;//保存每个同学拿到的书 c[1]=2 第一个同学拿到了2本书 void dfs(int step){//给第step个同学挑书 if(step==6){//边界 sum++; for(int i=1;i<=5;i++) cout<<char(c[i]+64)<<" "; cout<<endl; return; } for(int i=1;i<=5;i++){//i表示书的编号,都去看下面的每本书 if(book[i]==0&&a[step][i]==1){//必须该本书没有被挑过,并且这个同学喜欢这本书 c[step]=i;//把书给同学 book[i]=1;//标记该书为已经挑过 dfs(step+1);//去下一个同学 book[i]=0;//回溯过来的时候,不要忘记把书收回了 } } return; } int main(){ for(int i=1;i<=5;i++) for(int j=1;j<=5;j++) cin>>a[i][j]; dfs(1); if(sum==0) cout<<"no"; return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int a[6][6]; int book[6]; int c[6]; void dps(int step){ if(step==6){ for(int i=1;i<=5;i++) cout<<char(c[i]+64)<<" "; cout<<endl; return; } for(int i=1;i<=5;i++){ if(book[i]==0&&a[step][i]==1){ c[step]=i; book[i]=1; dps(step+1); book[i]=0; } } } int main(){ for(int i=1;i<=5;i++) for(int j=1;j<=5;j++) cin>>a[i][j]; dps(1); return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int a[6][6]; int book[6]; int c[6]; void dps(int step){ if(step==6){ for(int i=1;i<=5;i++) cout<<char(c[i]+64)<<" "; cout<<endl; return; } for(int i=1;i<=5;i++){ if(book[i]==0&&a[step][i]==1){ c[step]=i; book[i]=1; dps(step+1); book[i]=0; } } } int main(){ for(int i=1;i<=5;i++) for(int j=1;j<=5;j++) cin>>a[i][j]; dps(1); return 0; }
- 1
信息
- ID
- 1311
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 192
- 已通过
- 42
- 上传者