算法提高 寻找三位数 全排列问题

版权声明:Nicolas https://blog.csdn.net/qq_42835910/article/details/86623767

题目:http://lx.lanqiao.cn/problem.page?gpid=T189

全排列问题直接使用库函数next_permutation()就好了。

#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char** argv) {
	int a[9];
	for(int i=0;i<9;i++) a[i]=i+1;
	do{
		int b[3]={};
		for(int i=0;i<3;i++)
			for(int j=0;j<3;j++)
				b[i]=b[i]*10+a[i*3+j];
		bool ok=true;
		for(int i=1;i<3;i++){
			if(b[i]%b[0]!=0 || b[i]/b[0]!=i+1){
				ok=false;
				break;
			}
		}
		if(ok) cout<<b[0]<<" "<<b[1]<<" "<<b[2]<<endl;
	} while( next_permutation( a, a+9)); 
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_42835910/article/details/86623767