Java教程

dfs入门

本文主要是介绍dfs入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

全排列

#include<bits/stdc++.h>
using namespace std;
bool a[1000];
int l[1000];
void dfs(int length,int n){
	if(length==n+1){
		for(int i=1;i<=n;i++){
			cout<<l[i]<<" ";
		}
		cout<<endl;
		return ;
	}
	else{
		for(int i=1;i<=n;i++){
			if(a[i]==false){
			l[length]=i;
			a[i]=true;
			dfs(length+1,n);
			a[i]=false;
			}
		}
	}
}
int main(){
	int c;
	cin>>c;
	dfs(1,c);
	return 0;
}

两位数减两位数等于两位数

#include<bits/stdc++.h>
using namespace std;
int l[9];
bool b[10];
void dfs(int box){
	if(box>6){
		int x,y,z;
		x=l[1]*10+l[2];
		y=l[3]*10+l[4];
		z=l[5]*10+l[6];
		if(x-y==z){
		cout<<l[1]<<l[2]<<"-";
		cout<<l[3]<<l[4]<<"=";
		cout<<l[5]<<l[6];
		cout<<endl;
		}
		return;
	}
	for(int i=1;i<=9;i++){
		if(b[i]==false){
			l[box]=i;
			b[i]=true;
			dfs(box+1);
			b[i]=false;
		}
	}
}
int main(){
	dfs(1);
	return 0;
}

未完…

这篇关于dfs入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!