9 条题解
-
3
#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
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;}
-
2
思路:
根据题目,可以得出来排序的规则:
如果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
解析
sort的效果,就是最终保证任意两个元素都满足比较函数cmp结果为真,如果是相等的数,比较函数需要返回假。
改写cmp函数,直接排序
- 如果两数奇偶性不同,奇数排在前面
- 如果两数都是奇数,从大到小排列
- 如果两数都是偶数,从小大大排列
题解
#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
本来想写
#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
``
#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
清仓大甩卖! ------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
简简单单
#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
#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
- 上传者