根据自己的理解,作了下面的程序,如发现错误,还请高手指教。谢谢!
程序代码:/*-----------------------------------------------------------------------------
输入一个数 n.表示有n个数(n从1开始),再输入一个m,表示下面输入m组数,规定前
一个数在后一数的前面,输出这列数,如:
4
3
1 2
2 3
4 3
1 2 4 3
------------------------------------------------------------------
用全排列来作的这个程序,然后在输出时加上限制。不过在输入试验用的
数据时却出现了两个结果。
我的这个程序中的“规定前一个数在后一个数的前面”这个条件,是指的同
一组数据,在仔细思考这个题意时,也没发现理解错误。
如有高手肯出手指教,不胜感激。
----------------------------------------------------------------------------*/
#include
#include
#define N 100
#define wap(a,b) {int t=a;a=b;b=t;}
int m,n;
int num[N];
int a[N];
/* 检查函数,用于检查输入的数据中是否有超过边界条件的 */
int check()
{
int i=0;
for(;i
if(num[i]>n||num[i]<1) return 0; /* 如果有错误的输入,返回 0 */
return 1;
}
/*-----输入函数----------------------------*/
void input()
{
int i;
printf("input n and m:\n");
scanf("%d %d",&n,&m);
for(i=0;i
scanf("%d %d",&num[i],&num[i+1]);
if(!check(num))
{
printf("error\n");
exit(0); /* 如果发现数值不正确,退出 */
}
for(i=0;i
a[i]=i+1; /* 用于输出的数组赋值 */
}
void print()
{
int *a1,*a2;
int i;
for(i=0;i
{
a1=a2=a;
while(a1
{
if(num[i]==*a1) break;
a1++; /* 如果发现相同的数据,退出循环 */
}
while(a2