语言考试练习题_排列 oj21

来源:互联网 发布:布艺沙发 知乎 编辑:程序博客网 时间:2024/04/28 21:36

语言考试练习题_排列

发布时间: 2017年5月25日 19:57   最后更新: 2017年5月26日 00:08   时间限制: 1000ms   内存限制: 128M

有4个互不相同的数字,输出由其中三个不重复数字组成的排列。 

4个整数。

所有排列。

 复制
1 2 3 4
1 2 31 3 22 1 32 3 13 1 23 2 11 2 41 4 22 1 42 4 14 1 24 2 11 3 41 4 33 1 43 4 14 1 34 3 12 3 42 4 33 2 43 4 24 2 34 3 2
#include <algorithm>#include <cstdio>#include <vector>  #include <iostream>  using namespace std;int main(){int a[4] = { 0 };for (int i = 0; i < 4; i++)scanf("%d", &a[i]);vector<int> ans1,ans2,ans3,ans4;sort(a, a + 4);do{if (a[0] == 0)continue;ans1.push_back(a[0] * 100 + a[1] * 10 + a[2] * 1);} while (next_permutation(a, a + 3));int tmp[3];tmp[0] = a[0], tmp[1] = a[1], tmp[2] = a[3];do{if (tmp[0] == 0)continue;ans2.push_back(tmp[0] * 100 + tmp[1] * 10 + tmp[2] * 1);} while (next_permutation(tmp, tmp + 3));tmp[1] = a[2];do{if (tmp[0] == 0)continue;ans3.push_back(tmp[0] * 100 + tmp[1] * 10 + tmp[2] * 1);} while (next_permutation(tmp, tmp + 3));tmp[0] = a[1];do{if (tmp[0] == 0)continue;ans4.push_back(tmp[0] * 100 + tmp[1] * 10 + tmp[2] * 1);} while (next_permutation(tmp, tmp + 3));for (int i = 0; i < ans1.size(); i++)cout << ans1[i] / 100 << " " << ans1[i]%100/10<<" "<<ans1[i]%10<< endl;for (int i = 0; i < ans2.size(); i++)cout << ans2[i] / 100 << " " << ans2[i] % 100 / 10 << " " << ans2[i] % 10 << endl;for (int i = 0; i < ans3.size(); i++)cout << ans3[i] / 100 << " " << ans3[i] % 100 / 10 << " " << ans3[i] % 10 << endl;for (int i = 0; i < ans4.size(); i++)cout << ans4[i] / 100 << " " << ans4[i] % 100 / 10 << " " << ans4[i] % 10 << endl;return 0;}


原创粉丝点击