利用结构体解法
查看原帖
利用结构体解法
280399
Tay13楼主2024/3/7 10:40
#include<iostream>
using namespace std;
struct wa{
    int num;
    int pos;
};
int m31()
{
    int n,x,p=0,temp =1,t=0,q;
    cin>>n;
    wa w[n+1];  //创建结构体
    int a[n+1];
    for(int i=1;i<=n;i++){
        cin>>x;
        a[i] = x;
        if(x == 0 )
        {
            p = i;
        }
        else{
            w[x].num = x;  //编号
            w[x].pos = i;  //位置
        }
    }
    int m=0;
    q=n;
    n--;
    while(n--)
    {
        m = w[temp].pos;   //跳跃前的位置,即空出来了
        a[m] = 0;
        // t = w[temp].num;
        w[temp].pos = p;   //跳跃后的位置
        a[p] = w[temp].num;
//        cout<<m<<"~~~~~"<<p<<endl;
        p = m;
        temp++;
//        for(int i=1;i<=q;i++) cout<<a[i]<<" ";
//        cout<<endl;
    }

    for(int i=1;i<=q;i++) cout<<a[i]<<" ";
//    cout<<endl;
    return 0;
}
2024/3/7 10:40
加载中...