(以“分类:位运算分类:字符串处理 ==摘要== {{信息题|Brackets light|http://acm.sgu.ru/problem.php?contest{{=}}0&problem{{=}}179|1|100|无解情况|t...”为内容创建页面) |
小 (→摘要: 补充分数) |
||
| 第1行: | 第1行: | ||
[[分类:位运算]][[分类:字符串处理]] | [[分类:位运算]][[分类:字符串处理]] | ||
==摘要== | ==摘要== | ||
| − | {{信息题|Brackets light|http://acm.sgu.ru/problem.php?contest{{=}}0&problem{{=}}179|1|100|无解情况|time=2015-2-17 11:19:12}} | + | {{信息题|Brackets light|http://acm.sgu.ru/problem.php?contest{{=}}0&problem{{=}}179|1|100|无解情况|32|time=2015-2-17 11:19:12}} |
(AC 1476) | (AC 1476) | ||
| + | |||
==题意== | ==题意== | ||
生成一个<m>2^m*2^n</m>的矩阵,使得矩阵中相邻的两个数之间二进制差不超过一位。 | 生成一个<m>2^m*2^n</m>的矩阵,使得矩阵中相邻的两个数之间二进制差不超过一位。 | ||
| 题目链接 | 难度等级 | 完成状态 | 完成分数 | 最后编辑时间 | 失误原因(初次提交分数) |
|---|---|---|---|---|---|
| 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;
}
|