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;
}

未完…

上一篇:验证二叉搜索树中的前序序列——lintcode1307


下一篇:矩阵最小权重对角线(DFS)