问题标题: 酷町堂:1476

0
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
蔡辰夕
蔡辰夕
新手启示者
新手启示者

⠀⠀⠀⠀⠰⢷⢿⠄
⠀⠀⠀⠀⠀⣼⣷⣄
⠀⠀⣤⣿⣇⣿⣿⣧⣿⡄
⢴⠾⠋⠀⠀⠻⣿⣷⣿⣿⡀
🏀 ⠀⢀⣿⣿⡿⢿⠈⣿
⠀⠀⠀⢠⣿⡿⠁⠀⡊⠀⠙
⠀⠀⠀⢿⣿⠀⠀⠹⣿
⠀⠀⠀⠀⠹⣷⡀⠀⣿⡄
⠀⠀⠀⠀⣀⣼⣿⠀⢈⣧

我要回答