| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1661 人关注过本帖, 1 人收藏
标题:c语言,如何队列排列
只看楼主 加入收藏
h2008
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-12-8
收藏(1)
 问题点数:0 回复次数:11 
c语言,如何队列排列
1 c语言,急!!!如何排列!!!  
 输入一个数 n.表示有n个数(n从1开始),再输入一个m,表示下面输入m组数,规定前一个数在后一数的前面,输出这列数  
如:4  
3  
1 2  
2 3  
4 3  
1 2 4 3
搜索更多相关主题的帖子: c语言 排列 
2008-12-08 14:56
dillon
Rank: 1
等 级:新手上路
威 望:2
帖 子:183
专家分:0
注 册:2008-10-6
收藏
得分:0 
LZ能不能说的详细点,是怎样的排序啊?
2008-12-08 15:55
rangyiqiang
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-12-2
收藏
得分:0 
我也是看不出个所以然来~~~~~~~~~~~
2008-12-08 16:04
xian1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:42
专家分:10
注 册:2008-12-5
收藏
得分:0 
确实看不明白,你举的例子总感觉和你说的不对啊
2008-12-08 17:32
xian1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:42
专家分:10
注 册:2008-12-5
收藏
得分:0 
原来我没看到 如:后面的那个  4  晕!!
2008-12-08 17:33
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
12,
23,
43。

怎么会输出 1243 呢?希望高手解释一下……
2008-12-08 19:07
新浪
Rank: 3Rank: 3
来 自:水星
等 级:论坛游侠
威 望:1
帖 子:770
专家分:167
注 册:2008-6-10
收藏
得分:0 
1 2  
2 3  
4 3  


1 2 4 3

在1-4中任意选出两数作为一对 输入三对数  在最后输出的序列中  规定每一对的前一个数在后一个数前面

天下皆醒,唯我独醉;  天下皆白,唯我独黑
2008-12-08 20:22
h2008
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-12-8
收藏
得分:0 
对,是这么解释的!
2008-12-08 23:43
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
根据自己的理解,作了下面的程序,如发现错误,还请高手指教。谢谢!
程序代码:
/*-----------------------------------------------------------------------------

        输入一个数 n.表示有n个数(n从1开始),再输入一个m,表示下面输入m组数,规定前
    一个数在后一数的前面,输出这列数,如:
    4
    3
    1 2
    2 3
    4 3
    1 2 4 3

------------------------------------------------------------------

        用全排列来作的这个程序,然后在输出时加上限制。不过在输入试验用的
    数据时却出现了两个结果。

        我的这个程序中的“规定前一个数在后一个数的前面”这个条件,是指的同
    一组数据,在仔细思考这个题意时,也没发现理解错误。

        如有高手肯出手指教,不胜感激。

----------------------------------------------------------------------------*/
#include <stdio.h>
#include<string.h>
#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<m*2;++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<m*2;i+=2)
        scanf("%d %d",&num[i],&num[i+1]);
    if(!check(num))
    {
        printf("error\n");
        exit(0); /* 如果发现数值不正确,退出 */
    }
    for(i=0;i<n;++i)
        a[i]=i+1; /* 用于输出的数组赋值 */
}
void print()
{
    int *a1,*a2;
    int i;
    for(i=0;i<m*2;i+=2)
    {
        a1=a2=a;
        while(a1<a+n)
        {
            if(num[i]==*a1)    break;
            a1++;  /* 如果发现相同的数据,退出循环 */
        }
        while(a2<a+n)
        {
            if(num[i+1]==*a2) break;
            a2++;  /* 同上   */
        }
        if(a1>a2)    return; /* 如果发现数据的位置不正确,返回 */
    }
    for(i=0;i<n;++i)
        printf("%d ",a[i]);
    printf("\n"); /* 输出正确的数列 */
}
/*-----------------全排列函数--------------*/
void SORT(int k)
{
    int i;
    if(k+1==n)
    {
        print();
        return ;
    }
    for(i=k+1;i<n;++i)
    {
        wap(a[k+1],a[i]);
        SORT(k+1);
        wap(a[k+1],a[i]);
    }
}
int main(void)
{
    input();
    SORT(0);
    return 0;
}
2008-12-09 02:51
woshiyun
Rank: 1
等 级:新手上路
威 望:2
帖 子:348
专家分:0
注 册:2008-6-16
收藏
得分:0 
回复 第9楼 广陵绝唱 的帖子
1. 程序。
   check函数申明成int check(),调用成check(num),可以编译通过?
   exit(0)尽量少用,要用也要加上stdlib.h
2. 如果按照LZ的意思,答案的确不止一种,也不止你程序的两种。
   你的程序输出 1 2 4 3        1 4 2 3
   难道 4 1 2 3 不符合你理解的要求?举个例子,可能还有更多。
2008-12-09 08:30
快速回复:c语言,如何队列排列
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013105 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved