设为首页 加入收藏

TOP

按序输出集合的全排列
2013-01-09 14:07:00 来源: 作者: 【 】 浏览:378
Tags:输出 集合 排列

 

    简单示例代码

    [cpp]

    void swap(int *p,int*q)

    {

    int tmp;

    tmp=*p;

    *p=*q;

    *q=tmp;

    }

    void mknewseq(int *data,int start, int last)

    {

    while(start<last)

    {

    swap(&data[start],&data[last]);

    start++;

    last--;

    }

    }

    void showdata(int *data,int num)

    {

    int i=0;

    for(i=0;i<num;i++)

    {

    printf(" %d ",data[i]);

    }

    printf("\n");

    }

    int findall(int *data,int num)

    {

    int i,j;

    int lastdata=num-1;

    int tmp;

    for(i=lastdata;i>0;i--)

    {

    if(data[i]>data[i-1]) break;

    }

    if(0==i) return 0;

    tmp=i;

    for(j=lastdata;j>=i;j--)

    {

    if((data[j]>data[i-1])&&(data[j]<data[tmp]))

    tmp=j;

    }

    swap(&data[tmp],&data[i-1]);

    mknewseq(data,i,lastdata);

    return 1;

    }

    int main()

    {

    int data ={1,2,3,4};

    showdata(data,4);

    while(findall(data,4)){

    showdata(data,4);

    }

    return 0;

    }

      

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇ARM编程点亮一个LED灯 下一篇RTP实时音视频数据传输

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: