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,
列出所有从数字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+&#