快速学习stl(next_premutation)全排列;nyoj会排序的小明
来源:互联网 发布:淘宝网飞科剃须刀 编辑:程序博客网 时间:2024/05/18 19:36
刚开始做的时候由于不会next_premutation函数,就网上搜搜,结果都看不懂,大神的世界真难懂,我就自己做了一下,俩小时终于搞出来了,下面是我的代码,感觉好懂的话,加关注奥,谢谢
擅长排列的小明
时间限制:1000 ms | 内存限制:65535 KB
难度:4
- 描述
- 小明十分聪明,而且十分擅长排列计算。比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长。现在需要你写一个程序来验证擅长排列的小明到底对不对。
- 输入
- 第一行输入整数N(1<N<10)表示多少组测试数据,
每组测试数据第一行两个整数 n m (1<n<9,0<m<=n) - 输出
- 在1-n中选取m个字符进行全排列,按字典序全部输出,每种排列占一行,每组数据间不需分界。如样例
- 样例输入
23 14 2
- 样例输出
123121314212324313234414243
注意,处理当n-m=1和0的情况,喜欢的哥们顶一下,谢谢
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int m,n,i;
int l=1,k=1;
int a[1010];
scanf("%d%d",&n,&m);
memset(a,0,sizeof(a));
for(i=0;i<n;i++)
{
a[i]=i+1;
}
for(i=1;i<=n-m;i++)
{
l=l*i;
}
if(n-m==0||n-m==1)
do
{
for(i=0;i<m;i++)
printf("%d",a[i]);
printf("\n");
}while(next_permutation(a,a+n));
else
do
{
if(k%l==1)
{
for(i=0;i<m;i++)
printf("%d",a[i]);
printf("\n");
}
k++;
}while(next_permutation(a,a+n));
}
}
0 0
- 快速学习stl(next_premutation)全排列;nyoj会排序的小明
- NYOJ 19 擅长排列的小明(排列 dfs /STL)
- nyoj 19 擅长排列的小明 【全排列(n中抽取m个数)】
- NYOJ-19-擅长排列的小明(DFS 全排列)
- NYOJ 366 D的小L(从小到大输出排列。STL,next_permutation()函数的学习)
- nyoj 366 D的小L(全排列)
- nyoj 366 D的小L 【全排列(模板)】
- NYOJ 366 STL 全排列
- NYOJ 19 擅长排列的小明 (STL之next_permutation()的使用)
- D的小L 全排列 STL
- NYOJ 19 擅长排列的小明(dsf STL——next_permutation函数)
- poj1833排序(STL)—全排列
- NYOJ 366 D 的小L(全排列)
- NYOJ 366 D的小L (DFS 全排列)
- nyoj 366 D的小L 【全排列&&必须记住】
- 全排列(STL)
- 全排列(STL)
- 全排列(STL)
- mybatis+mysql,mapper配置文件中使用中文会乱码
- Emoji characters cannot be encoded to JSON
- Windows下svnserve安装及配置
- 基于AM335x的U-Boot/SPL 的CCS 调试
- Scala练习(七)
- 快速学习stl(next_premutation)全排列;nyoj会排序的小明
- Rails Mail发送不成功
- 快速枚举
- Symfony2 安装与使用
- 决策树和随机森林
- 给初学者分享四种 Sql Server分页查询使用示例
- uva 129 - Krypton Factor
- 本地破解 Windows server 2008 登录密码
- Volley问题