0
已解决
哪错了???
#include<iostream>
using namespace std;
int w[100005];
int main(){
int a;
for(int i=1;i<=100005;i++){
cin>>a;
w[a]++;
}
for(int i=100005;i>=0;i--){
for(int j=1;j<=w[i];j++){
if(w[i]%2==0){
cout<<i<<" ";
}
}
}
for(int i=1;i<=100005;i++){
for(int j=1;j<=w[i];j++){
if(w[i]%2==1){
cout<<i<<" ";
}
}
}
return 0;
}
0
已采纳
你对桶的理解肯能有一些错误
假如这个数是2,但只出现了1次,则w[i]=1,如果直接w[i]%2==0的话,就会发现这个数被当成了错误的数,就会跳过
所以应该把w[i]%2==0改为w[i]!=0&&i%2==0
根据这个,再把另一个也改一下就好了
0
你用sort就好了
先定义cmp函数,把奇数和偶数分化,在从大到小排序,示例:
bool cmp(stu x,stu y){
if(x.a[i]!=y.a[i]){
return x.a[i]>y.a[i];
}
..................
}(仅为示例!!勿当真)
sort你会写吧
祝你AC
0
首先sort是肯定的,所以#include<algorithm>也是肯定的
然后输入,sort。
接下来
for(int i=10;i>=1;i--)
if(a[i]%2==0)
用这种方式从后往前输出偶数,在用同样的方法从前往后输出奇数
注意空格和数组空间哦~
祝你AC愉快
0
for(int j=1;j<=w[i];j++){
if(w[i]%2==0){
cout<<i<<" ";
}
}
这个地方
只用改成
if(i%2==0)
再循环a[i]次输出i就行了(下面也是一样的)
张帆在2020-02-29 13:55:11追加了内容
for(int i=1;i<=100005;i++){
cin>>a;
w[a]++;
}
还有这里
是i<=10
张帆在2020-02-29 13:56:26追加了内容
for(int i=100005;i>=0;i--){
还有这里
是i=100000
下面也是一样
0
