A139.组合的输出 题解
2024-12-18 21:06:54
发布于:江苏
10阅读
0回复
0点赞
又是一道深搜题,刚看第一眼,怎么感觉和A7989.全排列问题那么像呢?
是的,这两题的区别就在输出格式和输入上,真的很像。
把代码套上——
#include<bits/stdc++.h>
using namespace std;
int n,r;
int a[21];
int b[22];
void dfs(int x){
if(x>r){
for(int i=1;i<=r;i++){
cout<<setw(2)<<a[i];//下面会讲
}
cout<<endl;
return;
}
for(int i=1;i<=n;i++){
if(b[i]==0&&i>a[x-1]){
b[i]=1;
a[x]=i;
dfs(x+1);
b[i]=0;
}
}
}
int main(){
cin>>n>>r;
dfs(1);
return 0;
}
好,我们看到setw( )这个函数。
它是干嘛的呢?我们科普一下——setw( )函数主要用于控制输出的宽度,即设置输出字段的宽度。
setw( )的使用注意事项
1. setw( )函数只对紧接着的输出数据起作用。这意味着,如果你想对后续的输出数据也应用同样的宽度设置,你需要在每次输出前都调用setw( )函数。
2. setw( )函数的默认行为是右对齐,即补充的空格会出现在输出内容的左侧。如果需要左对齐或其他对齐方式,可以结合使用其他的格式化函数,如setiosflags( )。
3. setw( )函数的宽度设置是临时的,每次输出后都会恢复到默认状态。因此,它通常用于一次性地调整某个特定输出的格式。
好,这题就这么解,可以把A7989.全排列问题也做一下。
这里空空如也
有帮助,赞一个