3 条题解

  • 3
    @ 2023-8-17 8:07:04
    #include<iostream>
    #include<cmath>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    char s[10];
    int length;
    char temp[10];
    bool isSelected(char m,int k)//m 在 temp 中是否有出现过
    {
        for(int i=0;i<k;i++)
        {
            if(temp[i]==m)//如果相等,表示之前k个已经取过m
            return true;
        }
        return false;
    }
    void fullArrange(int k)//用temp 更好 。进行第k个全排列,从0开始
    {
        // 在s[]中选择,然后填入temp中
        if(k==length)//All right! OUTPUT full arrange
        {
            for(int i=0;i<length;i++)
            cout<<temp[i];
            cout<<endl;
            return;
        }
        //从s[0]到s[strlen[s]-1]的一个循环
        // ~~如果n重循环,效率不行~~  
        // 然后是下一个字母的选择,不应该是选过的
        //例如abcdefgh,加一个判断此字符是否选过的,遍历数组
        //if(是没选过的) fullarrange(s,k+1), function -> isSelected()
        for(int i=0;i<length;i++)
        {
            if(!isSelected(s[i],k))//字符s[i],前k-1个中找
            {
                temp[k]=s[i];
                fullArrange(k+1);
            }
        }
    
    }
    int main()
    {
        scanf("%s",s);
        length=strlen(s);
        sort(s,s+length);//1.排序
        //不提前赋值的话!!!!!此时length为 0!!!!!! 注意使用strlen() s无值居然不报错
        fullArrange(0);//2.进入函数
        return 0;
    }
    
    
    
    • 3
      @ 2023-7-10 15:05:17

      利用next_permutation()来解决全排列,先输入一个字符串,在把字符串中的字符压入字符型数组。

      do
      {
              //此处省略代码
      }while (next_permutation(a, a + s.length()));
      
      • -6
        @ 2022-4-24 16:37:58

        写题解请注意

        鼓励大家写题解,但注意题解格式。

        题解一定要有思路解析或代码注释,能否让别人理解你的思路

        也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。

        给代码两端加上这个会舒服一些

        ```cpp

        你的代码

        ```

        </span>

        这个点在键盘的左上角tab上面那个键,注意切换输入法

        #include<iostream>
        using namespace std;
        int main()
        {
            int n;
            cin>>n;//这是一个注释
            return 0;
        } 
        

        请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。

        抄袭题解一经发现直接取消成绩。

        题解被删除的可能

        1. 代码不符合格式规范
        2. 没有思路讲解或者没有注释,
        3. 无意义的题解

        大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。

        • 1

        信息

        ID
        110
        时间
        1000ms
        内存
        256MiB
        难度
        5
        标签
        递交数
        325
        已通过
        137
        上传者