标签:
Description
Input
Output
Sample Input
1 2 3 41 1 2 30 1 2 30 0 0 0Sample Output
1234 1243 1324 1342 1423 14322134 2143 2314 2341 2413 24313124 3142 3214 3241 3412 34214123 4132 4213 4231 4312 43211123 1132 1213 1231 1312 13212113 2131 23113112 3121 32111023 1032 1203 1230 1302 13202013 2031 2103 2130 2301 23103012 3021 3102 3120 3201 3210
#include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std; #define N 100000 int a[4], num[N], ans; void dfs(int k) // 全排列 { if(k == 4) { if(a[0]) num[ans++] = a[0]*1000 + a[1]*100 + a[2]*10 + a[3]; // 第一位非0,1个4位数 return ; } else { for(int i = 0; i < 4; i++) { swap(a[i], a[k]); dfs(k+1); swap(a[k], a[i]); } } } int main() { int flag = 0; while(cin >> a[0] >> a[1] >> a[2] >> a[3], a[0] + a[1] + a[2] + a[3]) { memset(num, 0, sizeof(num)); ans = 0; dfs(0); sort(num, num+ans); // unique之前一般都sort一下 ans = unique(num,num+ans) - num; // 去重函数 num[ans] = 0; // 最后一个置为0, if(flag) cout << endl; for(int i = 0; i < ans; i++) { cout << num[i]; if(num[i]/1000 == num[i+1]/1000) cout << ‘ ‘; // 第一位数相同输空格,不相同换行 else cout << endl; } flag = 1; } return 0; }
标签:
原文地址:http://www.cnblogs.com/Tinamei/p/4658146.html