题目链接 | 难度等级 | 完成状态 | 完成分数 | 最后编辑时间 | 失误原因(初次提交分数) |
---|---|---|---|---|---|
Brackets light | ★☆☆☆☆ | 答案正确 | 100 | 2015-2-17 11:19:12 | 无解情况(32) |
(AC 1476)
生成一个的矩阵,使得矩阵中相邻的两个数之间二进制差不超过一位。
首先观察最普通的情况:
相当于一个二进制数从小变大,但是又要保持括号匹配。 我们参照二进制的+1,它是从后往前找到第一个0变成1,后面清零,例如:
同样的,我们也完成这两步即可。
179.cpp代码已折叠
展开折叠内容
|
---|
#include<cstdio> #include<string> #include<iostream> using namespace std; int main() { int m,n; string s; int a[2]={}; cin>>s; for(int i=s.size()-1;i>=0;--i) { ++a[s[i]=='(']; if(a[1]<a[0]&&s[i]=='(') { s[i]=')'; for(int j=i+1;j!=s.size();++j) if(a[1]) --a[1],s[j]='('; else --a[0],s[j]=')'; cout<<s; return 0; } } cout<<"No solution";//fixed:无解情况// return 0; } |