排列2
Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2611Accepted Submission(s): 1016
Problem Description
Ray又对数字的列产生了兴趣:
现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数。
Input
每组数据占一行,代表四张卡片上的数字(0<=数字<=9),如果四张卡片都是0,则输入结束。
Output
对每组卡片按从小到大的顺序输出所有能由这四张卡片组成的4位数,千位数字相同的在同一行,同一行中每个四位数间用空格分隔。
每组输出数据间空一行,最后一组数据后面没有空行。
Sample Input
1 2 3 4
1 1 2 3
0 1 2 3
0 0 0 0
Sample Output
1234 1243 1324 1342 1423 1432
2134 2143 2314 2341 2413 2431
3124 3142 3214 3241 3412 3421
4123 4132 4213 4231 4312 4321
1123 1132 1213 1231 1312 1321
2113 2131 2311
3112 3121 3211
1023 1032 1203 1230 1302 1320
2013 2031 2103 2130 2301 2310
3012 3021 3102 3120 3201 3210
首先是普通的暴力方法
#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a,const void *b);
int cmp(const void *a,const void *b)
{
return *(int*)a-*(int*)b;
}
int main()
{
int a[5]={1};
int i,j,k,p,m,q=0;
int s[100];
while(scanf("%d%d%d%d",&a[1],&a[2],&a[3],&a[4])!=EOF)
{
if(a[1]+a[2]+a[3]+a[4]==0)
break;
m=0;
if(q)printf("\n");
q++;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
if(i!=j)
for(k=1;k<=4;k++)
if(k!=i&&k!=j)
for(p=1;p<=4;p++)
if(p!=i&&p!=j&&p!=k&&a[i]!=0)
s[m++]=a[i]*1000+a[j]*100+a[k]*10+a[p]; //暴力出所有情况
qsort(s,m,sizeof(int),cmp);
printf("%d",s[0]);
i=1;
while(i!=m)
{
if(s[i]/1000!=s[i-1]/1000)
printf("\n%d",s[i]);
else
if(s[i]!=s[i-1])
printf(" %d",s[i]);
i++;
}
printf("\n");
}
return 0;
}
分享到:
相关推荐
标题中的“算法-排列2(HDU-1716)”是指一个编程竞赛题目,源自HDU(杭州电子科技大学)的在线评测系统。这类题目通常要求参赛者编写程序来解决特定的算法问题,此处涉及的是排列问题。排列问题在计算机科学中是一...
PC13/DIG4和PC14/OSCIN_RTP分别用于数字信号输出和时钟输入,可能与系统的数字逻辑和晶振有关。PC15/OSCOUT_RT则可能用于时钟输出。 STM32的其他功能包括RMII(Reduced Media Independent Interface)接口,用于...
具体地,题目涉及到了斐波那契数列的一个变种:F(1)=1, F(2)=1, F(3)=1, F(4)=1, F(n>4)=F(n-1)+F(n-2)+F(n-3)+F(n-4),其中n > 4。这里的关键是要能够计算出F(n)的值,而由于这个序列的增长速度非常快,传统的整数...
HDU(杭州电子科技大学在线评测系统)是一个深受程序员喜爱的在线编程练习平台,它提供了丰富的算法题目供用户挑战,帮助他们提升编程技能和算法理解能力。"hdu.rar_hdu"这个压缩包文件很可能是某位程序员整理的他在...
【标题】"HDU_2010.rar"是一个压缩包文件,其中包含了与"HDU 2010"相关的资源,特别是针对"HDU ACM20"比赛的编程题目。"hdu 2010"和"hdu 20"可能是该比赛的不同简称或分类,而"hdu acm20"可能指的是该赛事的第20届...
此题目要求输入一个特定日期(格式为“年/月/日”),然后计算并输出这一天是一年中的第几天。例如,输入“2023/1/1”,则应该输出“1”。 ### 解题思路 1. **判断平年与闰年**:首先需要判断输入的年份是否为闰年...
HDU是一个知名的在线编程竞赛平台,它提供了大量的算法题目供参赛者练习和提交解决方案。这里的“java实现”意味着作者使用Java作为编程工具来解答这些算法题。 在Java编程方面,以下是一些可能涵盖的知识点: 1. ...
2. **状态转移方程**:找出从一个状态转移到另一个状态的关系,即如何利用已知的小问题的解来构建大问题的解。 3. **初始条件**:确定问题的基本情况,这些情况可以直接求解,无需进一步分解。 4. **求解**:根据...
例如,如果问题是找出所有可能的无重复数字的排列,可以使用回溯法,即尝试在每个位置放置不同的数字,并在放置错误时回溯到上一步。 源程序可能包含了使用某种编程语言(如C++、Java、Python等)编写的解决方案。...
【标题】"hdu.rar_HDU 1089.cpp_OJ题求和_hdu_horsekw5_杭电obj" 提供的信息是关于一个压缩文件,其中包含了一个名为 "HDU 1089.cpp" 的源代码文件,这个文件是为了解决杭州电子科技大学(Hangzhou Dianzi ...
【标题】:杭电ACMhdu1163 【描述】:这是一道源自杭州电子科技大学(Hangzhou Dianzi University,简称HDU)的ACM编程竞赛题目,编号为1163。这类问题通常需要参赛者利用计算机编程解决数学、逻辑或算法上的挑战,...
HDU 1020,又被称为"猜数字",是一个经典的在线算法竞赛题目,源自中国杭州电子科技大学(Hangzhou Dianzi University)的在线评测系统HDU ACM/ICPC。这个题目要求参赛者编写一个程序,模拟一个猜数字的游戏过程,...
题目"小数化分数2(hdu1717)"正是这样一种挑战,它要求我们开发一个算法来精确地表示给定的小数为一个分数形式。 首先,我们要理解小数到分数转换的基本原理。对于有限小数,这个过程相对直接,因为我们可以直接...
【ACM HDU】指的是在ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest)中,参赛者在杭州电子科技大学(Hangzhou Dianzi University,简称HDU)的在线评测系统上完成并已解决的题目集合...
ACM HDU 题目分类是指对 HDU 在线判题系统中题目的分类,总结了大约十来个分类。这些分类将有助于编程选手更好地理解和解决问题。 DP 问题 DP(Dynamic Programming,动态规划)是一种非常重要的算法思想,在 ACM ...
2-sat---hdu3062,代码详尽,清晰,格式规范,亲测无误。
### hdu1290解题报告 #### 题目背景与意义 此题作为对杭州电子科技大学五十周年校庆的献礼,通过一道趣味性的数学问题来庆祝这一重要时刻。题目背景设置在一个充满想象力的情境下,即如何通过不同数量的切刀将一个...
2. HDU 2082 - 字符串翻转 这个问题要求将输入的字符串的前6个字符移到末尾。代码读取输入的整数`n`表示测试用例的数量,然后对每个测试用例,读取一个字符串`str`,并将它的后半部分移到前面,形成新的字符串`s`,...
题目“HDU 3333 Turing Tree”要求解决的问题是:给定一个整数序列和一系列区间,计算每个区间内不重复数字的和。由于数据规模较大(N ,000, K ,000),直接的暴力方法效率过低,因此我们需要采用一种更高效的数据...
HDU1059的代码