【ACM暑假培训】递归算法2:数字全排列+字符串全排列

2、数字全排列(numlist.pas/in/out)+字符串全排列
列出所有从数字1到数字n的连续自然数的排列,要求所产生的任一数字序列中不允许出现重复的数字。
输入一个整数
n(1≤n≤9)
输出由1~n组成的所有不重复的数字序列,每行一个序列,数字与数字之间用空格隔开,行首行尾不留空格。
样例输入:numlist.in
3
样例输出:numlist.out
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
思路:
递归,
设标志数组flag[100],初始化为0,访问后标记为1,

如果每个数字恰好访问了一次,那么它符合题意,输出。


#include<stdio.h>
int a[100]={0};

int yes=0;

void find(int m)
{
	int m1=m,len=0,flag1=0;
    int flag[100]={0};
	for(int i=0;m1>0;i++)
	{
	   a[i]=m1%10;
	   if(a[i]==0)
	   {
		   flag1=1;
		   break;
	   }
	   m1=m1/10;
	   len++;
	}
	int k=len-1;
	for(i=0;i<len&&flag1==0;i+&#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值