题解 | 小红的排列构造
小红的排列构造
https://www.nowcoder.com/practice/a4ec29e74aaa450aa8a4200fe3b06308
// 活动地址: 牛客春招刷题训练营 - 编程打卡活动 #include<iostream> #include<algorithm> #include<cmath> #include<vector> #define int long long using namespace std; int a[1010][1002]; void solve(){ // 这题应该也认识我 好像周赛还是小白赛出过 int n; string s; cin>>n>>s; // 如果最后一项是0 如果前面有1那就矛盾了 输出-1 if(s[n-1]=='0'){ cout<<"-1"; return ; } vector<int>a; for(int i=1;i<=n;i++){ a.emplace_back(i); } for(int i=0;i<n;i++){ if(s[i]=='0'){ // 出现0 说明不能构造成排列 交换 swap(a[i],a[i+1]); } } for(auto x:a){ cout<<x<<" "; } } signed main(){ int T=1; ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); // cin>>T; while(T--){ solve(); } return 0; } // 活动地址: 牛客春招刷题训练营 - 编程打卡活动