9 条题解

  • 3
    @ 2024-5-2 18:07:12
    #include<iostream>
    #include<algorithm>
    using namespace std;
    long long n[15],a[15],b[15],bn,an;
    int main()
    {
        for(int i=1;i<=10;i++)
        {
            cin >> n[i];
            if(n[i]%2==0)
            {
                a[i]=n[i];
                an++;
            }
            else
            {
                b[i]=n[i];
                bn++;
            }
        }
        sort(a+1,a+10+1);
        sort(b+1,b+10+1);
        for(int i=10;i>10-bn;i--)
        {
            cout << b[i] << " ";
        }
        for(int i=11-an;i<=10;i++)
        {
            cout << a[i] << " ";
        }
        return 0;
    }
    
    这里提供一个新手(我)的笨办法,请高手们多多包容~
    
    • 2
      @ 2023-7-24 22:05:58

      yasuo👀️

      #include <iostream>
      #include <algorithm>
      bool yasuo(int a,int b){
          if(a%2!=b%2) return a%2==1&&b%2==0;
          else{
              if(a%2==1) return a>b;
              else return a<b;}}
      int main(){
          int q[10];
          for(int i=0;i<10;i++) std::cin>>q[i];
          std::sort(q,q+10,yasuo);
          for(int i=0;i<10;i++) std::cout<<q[i]<<" ";
          return 0;}
      
      • @ 2023-12-3 19:40:14

        666666666666666666666666666666666666666666666666666666666666666666

    • 2
      @ 2023-7-23 16:49:50

      思路:

      根据题目,可以得出来排序的规则:

      如果a是偶数,b是奇数,b在a左边

      如果a是奇数,b是偶数,a在b左边

      如果a,b都是奇数,按从大到小的顺序排

      如果a,b都是偶数,按从小到大的顺序排

      把这些转换成代码,写到bool cmp(int a,int b)里面,然后在主函数里用sort(a,a + n,cmp)排序(如果下标从1开始用的用sort(a + 1,a + n + 1,cmp))

      #include <iostream>
      #include <algorithm>
      using namespace std;
      
      bool cmp(int a,int b)//因为脑子不太好使,所以写的cmp函数比课堂上的长了亿点,但效果一样
      {
          if(a % 2 == 1 && b % 2 == 0)
              return 1;
          else if(a % 2 == 0 && b % 2 == 1)
              return 0;
          else
          {
              if(a % 2 == 0 && b % 2 == 0)
                  return a < b;
              else
                  return a > b;
          }
      }
      
      int main()
      {
          int a[15];
          for(int i = 0;i < 10;i++)
              cin >> a[i];
          sort(a,a + 10,cmp);
          for(int i = 0;i < 10;i++)
              cout << a[i] << ' ';
          return 0;
      }
      
      • 2
        @ 2023-7-23 12:09:30

        解析

        sort的效果,就是最终保证任意两个元素都满足比较函数cmp结果为真,如果是相等的数,比较函数需要返回假。

        改写cmp函数,直接排序

        1. 如果两数奇偶性不同,奇数排在前面
        2. 如果两数都是奇数,从大到小排列
        3. 如果两数都是偶数,从小大大排列

        题解

        #include <iostream>
        #include <algorithm>
        using namespace std;
        bool cmp(int a, int b)
        {
            if (a % 2 != b % 2)
                return a % 2 == 1 && b % 2 == 0;
            if (a % 2 == 1 && b % 2 == 1)
                return a > b;
            if (a % 2 == 0 && b % 2 == 0)
                return a < b;
        }
        int main()
        {
            int a[15];
            for (int i = 1; i <= 10; i++)
                cin >> a[i];
            sort(a + 1, a + 10 + 1, cmp);
            for (int i = 1; i <= 10; i++)
                cout << a[i] << " ";
            return 0;
        }
        
        
        • 1
          @ 2023-7-23 21:29:03

          本来想写

          #include <bits/stdc++.h>
          using namespace std;
          int j[15],o[15],jum,oum;
          bool cmp(int a,int b)
          {
              return a > b;
          }
          int main()
          {
              int n,x;
              cin >> n;
              for (int i = 0;i < n;i++)
              {
                  cin >> x;
                  if (x % 2 == 1)
                  {
                      j[jum] = x;
                      jum++;
                  }
                  else
                  {
                      o[oum] = x;
                      oum++;
                  }
              }
              sort(j,j + jum,cmp);
              sort(o,o + oum);
              for (int i = 0;i < jum;i++)
                  cout << j[i] << ' ';
              for (int i = 0;i <= oum;i++)
                  cout << o[i] << ' ';
              return 0;
              }
          }
          

          但都RTE了,所以改了亿下

          #include <iostream>
          #include <algorithm>
          using namespace std;
          bool cmp(int a, int b)
          {
              if (a % 2 != b % 2)
                  return a % 2 == 1 && b % 2 == 0;
              if (a % 2 == 1 && b % 2 == 1)
                  return a > b;
              if (a % 2 == 0 && b % 2 == 0)
                  return a < b;
          }
          int main()
          {
              int a[15];
              for (int i = 1; i <= 10; i++)
                  cin >> a[i];
              sort(a + 1, a + 10 + 1, cmp);
              for (int i = 1; i <= 10; i++)
                  cout << a[i] << " ";
              return 0;
          }
          
          • 0
            @ 2023-8-4 22:24:53

            ``

            #include<bits/stdc++.h>
            using namespace std;
            int a[11];
            bool cmp_first(int a,int b){
            	if(a%2 != b%2) return a%2 > b%2;
                if(a%2 && b%2) return a>b;
                if(a%2+1 && b%2+1) return a<b;
            }
            int main()
            {
                for(int i=0;i<10;i++){cin>>a[i];}
            	sort(a,a+10,cmp_first);
            	for(int i=0;i<10;i++){cout<<a[i]<<" ";}
            	return 0;
            }
            ~~我可真腻害~~~~
            
            • 0
              @ 2023-7-31 19:36:48
              清仓大甩卖!
              ------I
              😄 I
               K  y       免费答案!!!!!!!!       一天后断货!!!!!!!!
              ——l
              ↓
              #include <bits/stdc++.h>
              using namespace std;
              int main()
              {
                  int a[11], num1[11], num2[11], cnt1 = 0, cnt2 = 0;;
                  for (int i = 1; i <= 10; i++)
                  {
                      cin >> a[i];
                      if (a[i] % 2 == 1)
                          num1[++cnt1] = a[i];
                      else
                          num2[++cnt2] = a[i];
                  }
                  sort(num1 + 1, num1 + cnt1 + 1);
                  sort(num2 + 1, num2 + cnt2 + 1);
                  for (int i = cnt1; i >= 1; i--)
                      cout << num1[i] << " ";
                  for (int i = 1; i <= cnt2; i++)
                      cout << num2[i] << " ";
                  return 0;
              }
              
              • 0
                @ 2023-7-26 10:16:18

                简简单单

                #include <bits/stdc++.h>
                using namespace std;
                int main()
                {
                    int a[11], num1[11], num2[11], cnt1 = 0, cnt2 = 0;;
                    for (int i = 1; i <= 10; i++)
                    {
                        cin >> a[i];
                        if (a[i] % 2 == 1)
                            num1[++cnt1] = a[i];
                        else
                            num2[++cnt2] = a[i];
                    }
                    sort(num1 + 1, num1 + cnt1 + 1);
                    sort(num2 + 1, num2 + cnt2 + 1);
                    for (int i = cnt1; i >= 1; i--)
                        cout << num1[i] << " ";
                    for (int i = 1; i <= cnt2; i++)
                        cout << num2[i] << " ";
                    return 0;
                }
                
              • 0
                @ 2023-7-23 21:57:25
                #include <iostream>
                using namespace std;
                int a[15],e[15],y[15];
                int main()
                {
                    int ej=0,yj=0,max=-1;
                    for (int i=1;i<=10;i++)
                        cin>>a[i];
                    for (int i=1;i<=10;i++)
                    {
                        if (a[i]%2==0)
                        {
                            e[ej]=a[i];
                            ej++;
                        }
                        else
                        {
                            y[yj]=a[i];
                            yj++;
                        }
                    }
                    for (int i=0;i<=yj-1;i++){
                        max=-1;
                        for (int i=0;i<=yj-1;i++)
                        {
                            if (max<y[i])
                                max=y[i];
                        }
                        cout<<max<<" ";
                        for (int i=0;i<=yj-1;i++){
                            if (max==y[i]){
                                y[i]=-1;
                                break;
                            }
                        }
                    }
                    for (int i=0;i<=ej;i++)
                    {
                        max=300000;
                        for (int i=0;i<=ej-1;i++)
                        {
                            if (max>e[i]){
                                max=e[i];
                            }
                        }
                        if (max!=300000)
                            cout<<max<<" ";
                        for (int i=0;i<=ej-1;i++){
                            if (max==e[i]){
                                e[i]=300000;
                                break;
                            }
                        }
                    }
                    return 0;
                }
                
                • 1

                信息

                ID
                325
                时间
                1000ms
                内存
                128MiB
                难度
                4
                标签
                递交数
                900
                已通过
                420
                上传者