用户:OLEEEEEEEEEEEEEEEEEE查看:5 回复:7 评论:5 创建时间:2024-07-20T09:47:52
继上次的C++测试(https://shequ.codemao.cn/community/701248),难度升级 阅读程序(满分100分,判断题每题6分,选择题每题7.5分,填空题每空9分) #include<bits/stdc++.h> usingnamespacestd; intn,a[30],b[30]; voiddfs(intx){ if(x>n){ for(inti=1;i<=n;i++) cout<<a[i]<<''; cout<<'\n'; return; } for(inti=1;i<=n;i++) if(b[i]==0){ b[i]=1; a[x]=i; dfs(x+1); b[i]=0; } } intmain(){ cin>>n; dfs(1); return0; } 数据范围:1<=n<=20。 判断题: 1.这篇程序中只出现了1个函数。 2.这篇程序中的a数组是计数数组。 3.这篇程序中dfs函数中的return会发生编译错误。 4.若n=30,程序将发生编译错误。 5.dfs函数中的x数组是引用传递。 选择题: 1.若输入2,会输出()。 A.1221 B.12回车21 C.1回车22回车1 D.1回车2回车2回车1 2.若输入3,dfs(2)会执行()次。 A.0 B.1 C.3 D.6 填空题: 1.这篇代码使用的dfs属于()算法(提示:递推的非递推形式),精确点属于()(提示:dfs)。 2.这篇代码输出的行数是()。 3.这篇代码的作用是计算(),常用()表示(提示:A)。 附:题解发布同前文。
不好意思,格式崩了。代码:
#include<bits/stdc++.h>
using namespace std;
int n,a[30],b[30];
void dfs(int x){
if(x>n){
for(int i=1; i<=n; i++)
cout<<a[i]<<'';
cout<<'\n';
return ;
}
for(int i=1; i<=n; i++)
if(b[i]==0){
b[i]=1;
a[x]=i;
dfs(x+1);
b[i]=0;
}
}
int main(){
cin>>n;
dfs(1);
return 0;
}点赞0
评论
#include<bits/stdc++.h>
using namespace std;
int n,a[30],b[30];
void dfs(int x){
if(x>n){
for(int i=1; i<=n; i++)
cout<<a[i]<<' ';
cout<<'\n';
return ;
}
for(int i=1; i<=n; i++)
if(b[i]==0){
b[i]=1;
a[x]=i;
dfs(x+1);
b[i]=0;
}
}
int main(){
cin>>n;
dfs(1);
return 0;
}点赞0
评论