本文共 1006 字,大约阅读时间需要 3 分钟。
较为简单。小于大于的都走一遍就可以AC了
#include #include #include #include #include #include #include #include #include #include #define I scanf#define OL puts#define O printf#define F(a,b,c) for(a=b;a =0;a--)#define LEN 1010#define MAX (1<<30)-1#define V vector using namespace std;int pre[LEN];vector post;bool isMirror=0;int n;void set_post(int a,int b){ if(a>b)return; if(a!=b){ int i=a+1; if(isMirror) while(i<=b && pre[i]>=pre[a]) i++; else while(i<=b && pre[i] =pre[a]) j++; set_post(a+1,i-1); set_post(i,j-1); } post.push_back(pre[a]);}int main(){// freopen("1043_3.txt","r",stdin); I("%d",&n); int i; FF(i,n) I("%d",&pre[i]); set_post(0,n-1); bool isOK=1; if(post.size()!=n){ post.clear(); isMirror=1; set_post(0,n-1); if(post.size()!=n) isOK=0; } if(isOK){ puts("YES"); FF(i,n){ O("%d",post[i]); if(i!=n-1) O(" "); } }else puts("NO"); return 0;}
=pre[a]) j++; set_post(a+1,i-1); set_post(i,j-1); } post.push_back(pre[a]);}int main(){// freopen("1043_3.txt","r",stdin); I("%d",&n); int i; FF(i,n) I("%d",&pre[i]); set_post(0,n-1); bool isOK=1; if(post.size()!=n){ post.clear(); isMirror=1; set_post(0,n-1); if(post.size()!=n) isOK=0; } if(isOK){ puts("YES"); FF(i,n){ O("%d",post[i]); if(i!=n-1) O(" "); } }else puts("NO"); return 0;}
转载于:https://www.cnblogs.com/TQCAI/p/8530516.html