排列2
来源:互联网 发布:sql union后字段为空 编辑:程序博客网 时间:2024/06/06 11:33
题目其实就是对4张卡做全排列,简单深度搜索。坑爹的是输出格式问题。写的很匆忙,TT很挫!
#include <iostream>#include <cstdio>#include <cstring>#include <map>#include <algorithm>using namespace std;int a[4],b[4],v[100],r[100],t,c[10][100];bool f[4];void check(){v[t++]=b[0]*1000+b[1]*100+b[2]*10+b[3];}void dfs(int k){if(k==4){check();return;}for(int i=0;i<4;i++){if(!f[i]){f[i]=1;b[k]=a[i];dfs(k+1);f[i]=0;}}}int main (){int i,j,fff=0;while(cin>>a[0]>>a[1]>>a[2]>>a[3]){if(a[0]==0 && a[1]==0 && a[2]==0 && a[3]==0) break;if(fff) cout<<endl;t=0;memset(f,0,sizeof(f));dfs(0);/*for(int i=0;i<t;i++)cout<<v[i]<<endl; */sort(v,v+t);char s[5],s1[5];int u=0;for(i=0;i<t;i++){itoa(v[i],s,10);itoa(v[i+1],s1,10);if(strlen(s)<4) continue;else if(v[i]==v[i+1]) continue;else if(s[0]==s1[0]) r[u++]=v[i];else {r[u++]=v[i];r[u++]=-1;}}int ff=0;memset(c,0,sizeof(c));for(i=0;i<u;i++){if(r[i]!=-1) c[ff][++c[ff][0]]=r[i];else ff++;}for(i=0;i<ff;i++){for(j=1;j<=c[i][0];j++){if(j==c[i][0]) cout<<c[i][j]<<endl;else cout<<c[i][j]<<' ';}}fff++;}return 0;}
- 排列2
- 排列2
- 排列2
- hdu1716 排列2(排列生成算法)
- hdu 1716 排列2 (全排列)
- HDU1716 排列2【全排列+输出格式】
- hdu1716排列2
- HDU 1716 - 排列2
- HDU 1716 排列2
- hdu 1716 排列2
- 习题2-10,排列
- HDU 1716/排列2
- HDU 1716 排列2
- hdu 1716 排列2
- HDU 1716 排列2
- 排列2 1716
- hdu 1714 排列2
- Hdoj1716排列2
- Cocos2d和UIKit的结合使用
- SDK和MFC的区别
- 关于java中split的使用
- delegate、Lambda表达式、Func委托和Expression(TDelegate)表达式目录树
- LINUX 指令
- 排列2
- Galaxy S3刷机改内核的流水账(2)
- Log4J 资料(地址转载)
- 我们三十岁以后才明白
- 口水流一地:13家外国创业公司办公室集锦
- 软件项目管理
- C语言中access函数
- js中setInterval与setTimeout
- 广播 多播