排列

来源:互联网 发布:如何编写软件程序 编辑:程序博客网 时间:2024/05/16 01:48

用1-9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3;

枚举abc得到三个数,然后再判断。有时候换一种枚举方式就能使问题的复杂度下降很多。

/* ***********************************************Author        :Lu_ckyCreated Time  :2016-6-8 10:15:50File Name     :xiao.cpp************************************************ */#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>#define LL long longusing namespace std;const int SIZE=1e6+10;const int maxn=1<<30;bool vis[10];bool is(int sa){memset(vis,false,sizeof(vis));for(int i=1;i<=3;i++){int x=sa*i;int s[3]={x%10,x%100/10,x/100};for(int i=0;i<3;i++){if(s[i]==0)return false;if(vis[s[i]])return false;vis[s[i]]=true;}}return true;}int main(){    //freopen("in.txt","r",stdin);    //freopen("out.txt","w",stdout);for(int ca=123;ca<=987;ca++)if(is(ca))printf("%d\n",ca);    return 0;}


0 0
原创粉丝点击