自写全排列

举报
开心星人 发表于 2022/06/29 22:08:57 2022/06/29
【摘要】 #include<bits/stdc++.h> typedef long long ll; using namespace std; int a[13]={1,2,3,4,5,6,7,8,9,...
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int a[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};  //待全排列 
int b[13];  //保存一个全排列 
int vis[13]; 
void dfs(int level,int num){   //level表示现在选到第几个了,num表示目标个数 
	//如果现在找到的层数已经等于目标个数了,则输出一个全排列 
	if(level==3){  //前四个数选三个进行全排列,如果要进行前四个数的完整全排列,将3和下一行的3改为num即可
		for(int i=0;i<3;i++){ 
			cout<<b[i]<<" ";
		}
		cout<<endl;
	}
	
	for(int i=0;i<num;i++){
		if(!vis[i]){
			vis[i]=1;
			b[level]=a[i];
			dfs(level+1,num);
			vis[i]=0;
		} 
	}
}
int main(){	
	dfs(0,4);   //前4个数的全排列 
	return 0;
} 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

文章来源: blog.csdn.net,作者:开心星人,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_55675216/article/details/124050702

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。