25 条题解

  • 51
    @ 2023-8-21 9:41:09

    这个题目很像L9/6第五个挑战,代码粘过来稍稍改一下就行。

    #include <bits/stdc++.h>//题解为hetao1098709制作
    //开局倒入万能库,啊是个人都会这么做,不然你得敲好几行代码。
    
    using namespace std;
    int main()
    {//啊导入主函数,是个人都会
    
    int n, zhenwuyu[15];
        cin >> n;//你得先知道要循环几次吧
    
    for (int i = 1; i <= n; i++)
        {
            cin>>zhenwuyu[i];//然后你得把所有数据输      进来存起来吧,我定义了一个数组。
    }
    
    sort(zhenwuyu+1,zhenwuyu+n+1);//一定不要落了排序,不排序代码是不能AC的~
    
    do//这部分就是课上讲的重中之重,也是整道题的核心代码
        {
            for(int i=1;i<=n;i++)
            {
                cout<<zhenwuyu[i]<<" ";
             }
        cout<<endl;     
        }
        while(next_permutation(zhenwuyu+1,zhenwuyu+n+1));
    //为什么我上面说一定要排序呢?
    //因为这里的do_while只能输出升序排序的方法
    //也就是说如果输入向4 1 2 3这四个数,你的代码只能输出
    //4 1 2 3、4 1 3 2、4 2 1 3、4 2 3 1、4 3 1 2、4 3 2 1 这几种方式。
    //但是你只要加上sort就不一样了,sort帮你自动从小到大排序了,这样你再使用next_permutation的时候就是从头开始每种情况都能输出了。
    
    return 0;//想加就加,懒得加就别加,反正都能AC。但是既然是题解,还是要加一下下的。
    }//括号绝对不能忘了,忘了能无语死你。
    

    想要完整代码? 诶,别急别急,这不来了吗。 (他来了,他来了,他迈着正步来了)

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n, zhenwuyu[15];
        cin >> n;
        for (int i = 1; i <= n; i++)
        {
            cin>>zhenwuyu[i];
        }
        sort(zhenwuyu+1,zhenwuyu+n+1);
        do
        {
            for(int i=1;i<=n;i++)
            {
                cout<<zhenwuyu[i]<<" ";
            }
            cout <<endl;
        }
        while(next_permutation(zhenwuyu+1, zhenwuyu+n+1));//这里加了一个空格。
        return 0;
    }
    
    • @ 2023-8-21 9:47:35

      点个赞再抱走吧,求求了,编辑很不容易哒。[求求][痛哭]

  • 7
    @ 2023-7-27 21:26:46

    P1016

    -题目回顾-

    给出n个数字,求这n个数字的全排列。


    -分析-

    没什么好讲的,如果不会做,再回去看看L9-6-5^_^


    -代码-

    #include <bits/stdc++.h>
    using namespace std;
    int main()//by AGOMG
    {
        int n, num[15];
        cin >> n;
        for (int i = 1; i <= n; i++)
        {
            cin >> num[i];
        }
        sort(num + 1, num + n + 1);
        do
        {
            for(int i = 1; i <= n; i++)
            {
                cout << num[i] << ' ';
            }
            cout << endl;
        } while(next_permutation(num + 1, num + n + 1));
        return 0;
    }
    
    
    • 4
      @ 2023-7-3 21:20:52

      开局导入万能库(国际惯例)

      #include <bits/stdc++.h>
      

      cin后使用sort进行排序

      因为是按照字典序

      sort(num+1,num+n+1);
      

      do_while循环很简单 这里不多说了

      next_permutation(num+1,num+n+1)
      

      全代码:

      
      
      #include <bits/stdc++.h>
      using namespace std;
      int main()
      {
      int n, num[15];
      cin >> n;
      for (int i = 1; i <= n; i++)
      {
      num[i] = i;
      }
      do
      {
      for(int i=1;i<=n;i++)cout<<num[i]<<' ';
      cout<<endl;
      }while(next_permutation(num+1,num+n+1));
      return 0;
      }
      
      
      • 4
        @ 2023-4-6 17:29:12
        题目大意
                给出n个数字,求这n个数字的全排列。

        完整思路
                对输入的数组先排序,再用next_permutation处理,得出全排列。

        核心代码
        
        sort(num + 1, num + n + 1);
        do
        {
        	for (int i = 1; i <= n; i++)
        	{
        		cout << num[i] << " ";
        	}
        	cout << endl;
        } while (next_permutation(num + 1, num + n + 1));
        
        
        • 3
          @ 2023-5-21 10:29:46

          要解决这个问题,我们可以使用C++的STL库中的next_permutation函数来生成全排列。


          先上代码

          #include <iostream>
          #include <vector>
          #include <algorithm>
          
          using namespace std;
          
          int main() {
              int n;
              cin >> n;
          
              vector<int> nums(n);
              for (int i = 0; i < n; i++) {
                  cin >> nums[i];
              }
          
              sort(nums.begin(), nums.end());  // 将数字按升序排序
          
              do {
                  for (int i = 0; i < n; i++) {
                      cout << nums[i] << " ";
                  }
                  cout << endl;
              } while (next_permutation(nums.begin(), nums.end()));
          
              return 0;
          }
          

          在这段代码中,我们首先读取输入的n和n个整数,将它们存储在一个vector中。然后,我们使用sort函数将数字按照升序排序。

          接下来,我们使用do-while循环和next_permutation函数来生成全排列。next_permutation函数会在每次调用时生成下一个排列,直到所有排列都被生成完毕。

          在每次生成的排列中,我们使用循环遍历并输出其中的每个数字。

          请注意,这段代码假设输入的整数是唯一的,没有重复的数字。如果存在重复的数字,next_permutation函数会按照字典序生成所有不同的排列。

          • 2
            @ 2024-5-26 17:58:50

            首先,输入数据

            int n, num[15];
            cin >> n;
            for (int i = 1; i <= n; i++)
            {
                cin >> num[i];
            }
            

            将数据从小到大排列

            sort(num + 1, num + n + 1);
            

            非常简单的全排列

            do
            {
                for(int i = 1; i <= n; i++)
                {
                    cout << num[i] << ' ';
                }
                cout << endl;
            } while(next_permutation(num + 1, num + n + 1));
            

            最终代码

            #include <bits/stdc++.h>//hetao1083217
            using namespace std;
            int main()
            {
                int n, num[15];
                cin >> n;
                for (int i = 1; i <= n; i++)
                {
                    cin >> num[i];
                }
                sort(num + 1, num + n + 1);
                do
                {
                    for(int i = 1; i <= n; i++)
                    {
                        cout << num[i] << ' ';
                    }
                    cout << endl;
                } while(next_permutation(num + 1, num + n + 1));
                return 0;
            }
            
            • 2
              @ 2024-3-30 11:14:27

              这个和本课时的作业很像,只要略微修改就可以了。

              #include<bits/stdc++.h>
              #define np next_permutation
              #define whlie while
              #define retrun return
              using namespace std;
              int n,a[11];
              int main(){
                  cin>>n;
                  for(int i=1;i<=n;i++){
                      cin>>a[i];
                  }
                  sort(a+1,a+n+1);  //排序
                  do{
                      for(int i=1;i<=n;i++){
                          cout<<a[i]<<" "; //输出
                      }
                      cout<<endl;
                  }whlie(np(a+1,a+n+1)); //使用next_permutation()
                  retrun 0;
              }
              

              代码看似不能过,实则能过(你可以把那些define的去掉,然后把乱码改掉即可)

              • 1
                @ 2024-4-1 20:08:02
                # 这题很简单,只要挨个枚举就可以了。
                上代码
                #include<bits/stdc++.h>
                using namespace std;
                
                int a[15];
                
                int main(){
                    int n;
                    cin>>n;
                    for (int i=1;i<=n;i++)
                        cin>>a[i];
                    sort(a+1,a+n+1);//为了保证最后结果齐全,先要排序
                    do{
                        for (int i=1;i<=n;i++)
                            cout<<a[i]<<" ";
                        cout<<endl;
                    }while (next_permutation(a+1,a+n+1));//全排列
                    return 0;
                }
                
                • 1
                  @ 2024-3-31 21:20:42

                  image

                  AC代码运行前的样子

                  开始导入一个万能数据库,免得占用空间

                  后再写入主代码,输入排序之后调用do{}while函数,写出全排列

                  最后就进行实验,只要 100 Accepted 就OK了!

                  上AC代码:

                  image

                  • 1
                    @ 2024-2-20 14:33:54

                    dfs即可

                    #include <bits/stdc++.h>
                    #define ll long long
                    #define endl "\n"
                    using namespace std;
                    int n, a[15], b[15];
                    bool v[15];
                    void dfs(int d)
                    {
                        if (d > n)
                        {
                            for (int i = 1; i <= n; i++)
                            {
                                cout << b[i] << " ";
                            }
                            cout << endl;
                            return;
                        }
                        for (int i = 1; i <= n; i++)
                        {
                            if (!v[i])
                            {
                                v[i] = 1;
                                b[d] = a[i];
                                dfs(d + 1);
                                v[i] = 0;
                            }
                        }
                    }
                    int main()
                    {
                        ios::sync_with_stdio(false);
                        cin.tie(0);
                        cin >> n;
                        for (int i = 1; i <= n; i++)
                        {
                            cin >> a[i];
                        }
                        sort(a + 1, a + n + 1);
                        dfs(1);
                        return 0;
                    }
                    
                    • 1
                      @ 2023-8-9 23:31:47

                      本节课我们学习用next_permutation() 函数与do{ }while()循环,不要忘记函数库algorithm 代码如下:

                      #include <bits/stdc++.h>
                      #include <algorithm>
                      using namespace std;
                      int main()
                      {
                          int n,num[15];
                          cin >> n;
                          for (int i=1;i <= n;i++)
                          {
                              cin>>num[i];
                          }
                          sort(num+1,num+n+1);
                          do
                          {
                              for(int i=1;i<=n;i++)
                              {
                                  cout<<num[i]<<' ';
                              }
                              cout<<endl;
                          } while(next_permutation(num+1,num+n+1));
                          return 0;
                      }
                      
                      • 1
                        @ 2023-4-7 20:01:16

                        P1016 全排列

                        题目描述

                        给出n个数字,求这n个数字的全排列。


                        思路

                        用全排列的代码呗:

                        for (int i = 1; i <= n; i++)
                            {
                                num[i] = i;
                            }
                            do
                            {
                                for(int i = 1;i <= n;i++)
                                {
                                    cout << num[i] << " ";
                                }
                                cout << endl;
                            } while(next_permutation(num + 1,num + n + 1));
                        

                        不过注意:

                        1.头文件,可以直接万能,也可以 iostreamalgorithm;

                        2.起始地址和终止地址。


                        参考代码:

                        #include <iostream>//hetao3097453
                        #include <algorithm>
                        using namespace std;
                        int num[10];
                        int main()
                        {
                            int n;
                            cin >> n;
                            for(int i = 1;i <= n;i++)
                            {
                                cin >> num[i];
                            }
                            sort(num + 1,num + n + 1);
                            do
                            {
                                for(int i = 1;i <= n;i++)
                                {
                                    cout << num[i] << " ";
                                }
                                cout << endl;
                            } while(next_permutation(num + 1,num + n + 1));
                            return 0;
                        }
                        

                        hetao3097453

                        2023年4月7日

                        • 0
                          @ 2023-8-9 21:03:50

                          题目分析:

                          题目是让我们写一个程序,输入n,和n个整数,输出这n个整数的全排列

                          解题思路:

                          先定义变量n,再写for循环,输入到数组中,再根据教材上的全排模版,写好各个参数,输出就行了,但是要注意,每输出一个情况,就要写一个换行

                          参考代码

                          
                          #include <bits/stdc++.h>
                          using namespace std;
                          int n,num[20];
                          int main()
                          {
                          cin >> n;
                          for (int i = 1;i <= n;i++)
                          {
                          cin >> num[i];
                          }
                          sort(num + 1,num + n + 1);
                          do{
                          for (int i = 1;i <= n;i++)
                          {
                          cout << num[i] << " ";
                          }
                          cout << endl;
                          }while (next_permutation(num + 1,num + n + 1));
                          return 0;
                          }
                          
                          
                          
                          
                          • -1
                            @ 2024-4-13 16:35:33
                            #include <bits/stdc++.h>
                            using namespace std;
                            int main()
                            {
                                int n, zhenwuyu[15];
                                cin >> n;
                                for (int i = 1; i <= n; i++)
                                {
                                    cin>>zhenwuyu[i];
                                }
                                sort(zhenwuyu+1,zhenwuyu+n+1);
                                do
                                {
                                    for(int i=1;i<=n;i++)
                                    {
                                        cout<<zhenwuyu[i]<<" ";
                                    }
                                    cout <<endl;
                                }
                                while(next_permutation(zhenwuyu+1, zhenwuyu+n+1));//这里加了一个空格。
                                return 0;
                            }
                            
                            • -1
                              @ 2023-8-9 20:12:36

                              首先输入

                              scanf("%d",&n);
                              for(int i=1;i<=n;i++)scanf("%d",&num[i]);
                              

                              然后用sort,否则不能用next_permutation,也不是字典序

                              sort(num+1,num+n+1);
                              

                              然后是喜闻乐见的核心代码

                              do{
                                   for(int i=1;i<=n;i++)printf("%d ",num[i]);
                                   printf("\n");
                               }while(next_permutation(num+1,num+n+1));
                              
                              • -1
                                @ 2023-7-8 15:31:34

                                全排列 这个应该都会吧,基础题

                                上代码!

                                #include <iostream>//hetao8554411.
                                #include <deque>//刻意烤驴食用双端队列孑孓
                                //上面注释打错了,但好像是故意的(可以考虑使用双端队列解决)
                                #include <algorithm>
                                
                                using namespace std;
                                
                                int main() {
                                    int n;
                                    cin >> n;
                                
                                    deque<int> ans(n);
                                    ans.push_front(0); //先往ans里扔一个0,不然结果会出错
                                    for (int i = 1;i <= n;i++) 
                                        cin >> ans[i];
                                
                                    sort(ans.begin(),ans.end());  //排序
                                
                                    do 
                                    {
                                        for (int i = 1;i <= n;i++)
                                            cout << ans[i] << " ";
                                
                                        cout << endl;
                                    } while(next_permutation(ans.begin() + 1,ans.end()));//这个懂的都懂
                                
                                    return 0;
                                }
                                

                                点赞再抱走,b站号看主页

                                • -2
                                  @ 2024-4-13 19:24:09

                                  • -2
                                    @ 2024-2-2 16:56:10
                                    #include <bits/stdc++.h>
                                    using namespace std;
                                    int main(){
                                        int n,a[13];
                                        cin>>n;
                                        for(int i=1;i<=n;i++)cin>>a[i];
                                        sort(a+1,a+n+1);
                                        do{
                                            for(int i=1;i<=n;i++)cout<<a[i]<<' ';
                                            cout<<endl;
                                        }while(next_permutation(a+1,a+n+1));
                                        return 0;
                                    }
                                    
                                    
                                    • -2
                                      @ 2024-1-6 17:36:28
                                      #include <iostream>
                                      #include <vector>
                                      #include <algorithm>
                                      
                                      using namespace std;
                                      
                                      int main() {
                                          int n;
                                          cin >> n;
                                      
                                          vector<int> nums(n);
                                          for (int i = 0; i < n; i++) {
                                              cin >> nums[i];
                                          }
                                      
                                          sort(nums.begin(), nums.end());  
                                      
                                          do {
                                              for (int i = 0; i < n; i++) {
                                                  cout << nums[i] << " ";
                                              }
                                              cout << endl;
                                          } while (next_permutation(nums.begin(), nums.end()));
                                      
                                          return 0;
                                      }
                                      
                                      • -3
                                        @ 2024-1-27 9:38:39
                                        # 最基础的全排列代码!
                                        再不会做,就会去看回放
                                        #include <bits/stdc++.h>
                                        using namespace std;
                                        int a,b[1000];
                                        int main()
                                        {
                                            cin>>a;
                                            for(int i=1;i<=a;i++)
                                            {
                                                cin>>b[i];
                                            }
                                            sort(b+1,b+a+1);
                                            do
                                            {
                                                for(int i=1;i<=a;i++)
                                                {
                                                    cout<<b[i]<<" ";
                                                }
                                                cout<<endl;
                                            }while(next_permutation(b+1,b+a+1));
                                        }
                                        

                                        信息

                                        ID
                                        2
                                        时间
                                        1000ms
                                        内存
                                        256MiB
                                        难度
                                        4
                                        标签
                                        递交数
                                        2599
                                        已通过
                                        1277
                                        上传者