zzuli OJ 2353: 小明学长给学弟的任务

本文介绍了一个算法问题,即给定一组0至9的数字,如何找出所有可能组成的不重复的三位数。通过一个具体的代码示例,详细展示了如何使用嵌套循环来遍历所有可能的组合,同时避免重复数字出现在同一三位数中。这是一个经典的全排列问题,常见于编程竞赛和算法训练。

*情况说明:8级新生周赛(2)*

题目描述

 这几天,小明学长事情比较多,一边写文件,一边思考怎么为小石坝们出既有意思,又能检验大家学习情况的题目。忙的一塌糊涂的小明学长看见石榴学弟竟然来找他闲聊!闲聊!!!聊着聊着石榴学弟随口一句:“等我看见好的题目也加上去”,“行啊”  , “。。。”(都知道做题消耗脑细胞,其实出题消耗更多脑细胞,发际线又得高了,宝宝心里苦,不想说话),,于是,石榴理所当然的认为学弟替学长分担任务是一种应该传承的美德,那么就把这道困扰石榴好久的问题交给你们了:
给定0~9的数字,求出能组成的所有各位不重复的三位数。

输入

多组测试数据,当n为0时输入结束且不做输出。
对于每组测试样例:第一行一个数字n(3<= n <= 10)
第二行给出 n个0~9的整数,且按照从小到大不重复的给出,用空格隔开。
输出

对于每组输入,按照从小到大输出,输出能组成的所有各位不重复的三位整数,一个整数占一行。

样例输入

3

1 2 3

3

4 6 8

0

样例输出

123

132

213

231

312

321

468

486

648

684

846

864

 

 

#include<stdio.h>
int main()
{
	int n;
	int ch[11];
	int i,j,k;
	while(scanf("%d",&n),n!=0)
	{
		for(i=0;i<n;i++)
			scanf("%d",&ch[i]);
		for(i=0;i<n;i++)
		{
			if(ch[i]==0) continue;
			for(j=0;j<n;j++)
			{
				if(j==i) continue;
				for(k=0;k<n;k++)
				{
					if(k==i||k==j) continue;
					printf("%d%d%d\n",ch[i],ch[j],ch[k]);
				}
			}
		}

	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值