首页 > 代码库 > sdut oj 1163 C语言实验——排列 (当初不会递归生成排列,这个题目现在才补上 刘汝佳给出了写法 *【模板】 当然有生成全排列的函数存在 )
sdut oj 1163 C语言实验——排列 (当初不会递归生成排列,这个题目现在才补上 刘汝佳给出了写法 *【模板】 当然有生成全排列的函数存在 )
C语言实验——排列
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
有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 <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>#include <limits.h>#include <algorithm>using namespace std;int a[4];void Print_permutation(int n, int *a, int *c, int cur ){ int i, j; if(cur==n) { for(i=0; i<n; i++) { if(i==0) printf("%d", a[i] ); else printf(" %d", a[i]); } printf("\n"); } else { for(i=0; i<3; i++) { int ok=1; for(j=0; j<cur; j++) { if(a[j]==c[i] ) ok=0; } if(ok) { a[cur]=c[i]; Print_permutation(n, a, c, cur+1 ); } } }}int main(){ int i, j; for(i=0; i<4; i++) scanf("%d", &a[i] ); int b[3]; int c[3]; b[0]=a[0]; b[1]=a[1]; b[2]=a[2]; //1 2 3 for(i=0; i<3; i++) c[i]=b[i]; Print_permutation(3, b, c, 0); b[0]=a[0]; b[1]=a[1]; b[2]=a[3]; //1 2 4 for(i=0; i<3; i++) c[i]=b[i]; Print_permutation(3, b, c, 0); b[0]=a[0]; b[1]=a[2]; b[2]=a[3]; //1 3 4 for(i=0; i<3; i++) c[i]=b[i]; Print_permutation(3, b, c, 0); b[0]=a[1]; b[1]=a[2]; b[2]=a[3]; //2 3 4 for(i=0; i<3; i++) c[i]=b[i]; Print_permutation(3, b, c,0); return 0;}
sdut oj 1163 C语言实验——排列 (当初不会递归生成排列,这个题目现在才补上 刘汝佳给出了写法 *【模板】 当然有生成全排列的函数存在 )
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。