题解 | 小红的排列构造②

小红的排列构造②

https://www.nowcoder.com/practice/a4ec29e74aaa450aa8a4200fe3b06308

说真的最开始真没看懂,又没规定我输出一定得是n以内的数还是试出来 的

#include <bits/stdc++.h>
using namespace std;

int main() {
    
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(0);
 
    int n;
    cin>>n;
    vector<int> a,pos;
    string s;
    cin>>s;
    s = "0"+s;
    int x =  s.find("1");
    for(int i=1;i<s.size();i++){
        if(s[i]=='1') pos.push_back(i);
    }
    if(s[n]=='0'){
        cout<<-1<<"\n";
    }else if(x!=-1){
        for(int i=0;i<pos.size();i++){
            if(i==0) {
                for(int j=pos[i];j>=1;j--){
                    a.push_back(j);
                }
            }else{
                int cnt = pos[i]-pos[i-1];
                for(int j=pos[i];cnt>0;cnt--,j--){
                    a.push_back(j);
                }
            }  
        }
            for(int i=0;i<a.size();i++){
                cout<<a[i]<<" ";
            }
            if(a.size()<n){
                for(int i=1;i<=n-a.size();i++){
                    cout<<i<<" ";
                }
            }
            cout<<endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

飞屋一号:实话实说就行,先争取一下能不能线上,不行就直接放弃,付出与回报不成正比
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务