Description
有4个互不相同的数字,输出由其中三个不重复数字组成的排列。
Input
4个整数。
Output
所有排列。
Sample Input
1 2 3 4
Sample Output
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 1 2 4 1 4 2 2 1 4 2 4 1 4 1 2 4 2 1 1 3 4 1 4 3 3 1 4 3 4 1 4 1 3 4 3 1 2 3 4 2 4 3 3 2 4 3 4 2 4 2 3 4 3 2
HINT
Source
代码如下:
#include <stdio.h> int i,j,k,a[3],b[3],c[3]; void Sort(int e[]) { for (i=0; i<3; i++) a[i]=b[i]=c[i]=e[i]; for(i=0; i<3; i++) { for(j=0; j<3; j++) { for(k=0; k<3; k++) { if(a[i]==b[j]||a[i]==c[k]||b[j]==c[k]) continue; else printf("%d% d %d\n",a[i],b[j],c[k]); } } } } int main() { int i, d[4],e[3]; for (i=0; i<4; i++) scanf("%d", d+i); e[0]=d[0],e[1]=d[1],e[2]=d[2]; Sort(e); e[0]=d[0],e[1]=d[1],e[2]=d[3]; Sort(e); e[0]=d[0],e[1]=d[2],e[2]=d[3]; Sort(e); e[0]=d[1],e[1]=d[2],e[2]=d[3]; Sort(e); return 0; }
运行结果:
学习心得:
最近在尝试着用C语言去做题,但是还是摆脱不了浓浓的C++气息,经常因为带上C++中的一些关键字而错误。
这道题其实一开始是没有思路的,第一反应是枚举,结果那只适用于1,2,3,4,的情况。然后想到了用多个数组来保存,能够完美执行,但是还是错了,它居然要求了排列顺序,
于是进一步复杂化,一次分成了四次。总算还是AC了
时间: 2024-10-16 06:12:31