Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
110910 | 廖悦扬 | 挖地雷 | C++ | 通过 | 100 | 1 MS | 300 KB | 1192 | 2023-11-17 18:39:29 |
#include <bits/stdc++.h> using namespace std; int n,bj,tot; int a[10005],vis[10005]; void search(int k) { tot=0; for(int i=k-1;i<=k;i++) if(vis[i]) tot++; if(k==n) { if(a[n]==tot) bj=1; return ; } if(a[k]-tot==1) vis[k+1]=1; if(a[k]-tot==0) vis[k+1]=0; if(a[k]-tot>=2) return ; if(a[k]-tot<0) return ; search(k+1); } int main() { cin >> n; for(int i=1;i<=n;i++) { cin >> a[i]; if(a[i]<0||a[i]>3) { cout<<"No answer"<<endl; return 0; } } if(a[1]==2) { vis[1]=1; vis[2]=1; search(2); } if(a[1]==0) search(2); if(a[1]==1) { vis[1]=1; search(2); if(!bj) { memset(vis,0,sizeof(vis)); vis[2]=1; search(2); } } if(bj) { for(int i=1;i<=n;i++) cout<<vis[i]<<" "; } else cout<<"No answer"<<endl; return 0; }