题解 | 小欧安排座位

#include <iostream>
#include <vector>
using namespace std;
//整体思路就是存储所有特殊孩子,每个特殊孩子都用下一个特殊孩子的号码
int main() {
    int n;
    string ss;
    cin >> n;
    cin >> ss;
    vector<int> spec;//spec存储特殊孩子的序号
    int size = 0;//size存储特殊孩子的个数
    for(int i = 0; i < n; i++){
        if(ss[i]=='1'){
            spec.push_back(i+1);    
            size++;
        }
    }
    int count = 1;//记录是第几个特殊孩子
    for(int i = 0; i < n; i++){
        if(ss[i]=='0')//普通孩子直接输出序号
            cout << i+1 << ' ';
        else{
            if(count==size)//最后一个特殊孩子用第一个的号码
                cout << spec[0] << ' ';
            else
                cout << spec[count] << ' ';
            count++;
        }
    }
    cout << endl;
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务