zoukankan      html  css  js  c++  java
  • 字符串的应用(续一)

                                   擅长排列的小明

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:4
     
    描述
    小明十分聪明,而且十分擅长排列计算。比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长。现在需要你写一个程序来验证擅长排列的小明到底对不对。
     
    输入
    第一行输入整数N(1<N<10)表示多少组测试数据,
    每组测试数据第一行两个整数 n m (1<n<9,0<m<=n)
    输出
    在1-n中选取m个字符进行全排列,按字典序全部输出,每种排列占一行,每组数据间不需分界。如样例
    样例输入
    2
    3 1
    4 2
    样例输出
    1
    2
    3
    12
    13
    14
    21
    23
    24
    31
    32
    34
    41
    42
    43


    #include<iostream>
    #include<string>
    #include<algorithm>                
    using namespace std;
    int main()
    {
    int t;
    cin>>t;
    while(t--)
    {
    int n,m,i,k=0;
    cin>>n>>m;
    string s1,s2;
    for(i=1;i<=n;i++)
    {
    s1+=i+'0';
    }
    s2=s1.substr(0,m);                 
    cout<<s2<<endl;
    while(next_permutation(s1.begin(),s1.end()))            //next_permutation(),所以必须用到#include<algorithm>头文件
    {
    //cout<<"这是第"<<++k<<"次"<<endl;
    //cout<<"字符串s1 "<<s1<<endl;
    //cout<<"s2未处理 "<<s1.substr(0,m)<<endl;
    if(s2!=s1.substr(0,m))
    {
    s2=s1.substr(0,m);
    cout<<s2<<endl;
    }
    }
    }
    return 0;
    }

    归纳知识点:

    (1) substr(start,length)  返回一个从指定位置开始,并具有指定长度的子字符串。

    参数:
    start
    必选。所需的子字符串的起始位置。字符串中第一个字符的索引为 0。
    length
    可选项。返回的子字符串中包含的字符数。
    备注
    如果 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到字符串的结尾。

    (2)  next_permutation   这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件<algorithm>,与之相反的是prev_permutation

    int型的next_permutation ------- next_permutation(a,a+m)  备注:int a[3];  m必须小于等于3

    char型的next_permutation-------next_permutation(first,last) 备注:char ch[200];  char*first=ch; char* last=ch+strlen(ch);

    string 型的next_permutation------next_permutation(s.begin(),s.end()) 备注:string s;

  • 相关阅读:
    luogu P3375 【模板】KMP字符串匹配
    leetcode[129]Sum Root to Leaf Numbers
    leetcode[130]Surrounded Regions
    leetcode[131]Palindrome Partitioning
    leetcode[132]Palindrome Partitioning II
    leetcode[133]Clone Graph
    leetcode[134]Gas Station
    leetcode[135]Candy
    leetcode[136]Single Number
    leetcode[137]Single Number II
  • 原文地址:https://www.cnblogs.com/zdblog/p/3632691.html
Copyright © 2011-2022 走看看