求大神指点

zs520ct 2015-03-20 08:34:06
时间限制: 1 Sec 内存限制: 128 MB
提交: 24 解决: 10
[提交][状态][论坛]

题目描述


二师兄一个寒假尽在吃喝玩乐,还老爱坑三师兄,于是乎,出了一个全排列的题目。。为了德玛西亚战斗吧~!~,。

纳尼~!~什么是全排列,,看下数据就懂啦,题目略难。。

输入


一个m代表多少组数据,

每行一个9以内的数字n,输出1~n的全排列


输出


输出1~n的全排列每组数据之间有一个空行。。

样例输入

3
1
2
3

样例输出

1

12
21

123
132
213
231
312
321



提示
...全文
328 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
GYD_01 2017-10-21
  • 打赏
  • 举报
回复
STL有一个全排列函数你可以试试
GYD_01 2017-10-13
  • 打赏
  • 举报
回复
这道题出的不严谨,不是很好,全排列算法有好多种,也许得到的结果在排列顺序上会有一些差别,这样就可能导致错误。我做了一下。 这是我的代码,结果和上述例子有细小差别。不过也能找到n的全排列,只是这道题是通不过的。
#include <bits/stdc++.h>
using namespace std;
int a[10];
int n;
void dg(int m,int a[])
{
    if(m==n)
    {
        for(int i=1;i<=n;i++)
        {
            printf("%d",a[i]);
        }
        printf("\n");
    }
    for(int i=m;i<=n;i++)
    {
        int temp = a[m];
            a[m] = a[i];
            a[i] = temp;
            dg(m+1, a);
            temp = a[m];
            a[m] = a[i];
            a[i] = temp;
    }
}
int main()
{
    int m;
    scanf("%d",&m);
    while(m--)
    {
        memset(a,0,sizeof(a));
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            a[i]=i;
        }
        dg(1,a);
        printf("\n");
    }
    return 0;
}
这是结果,有细小差别

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧