题意是说在 h 行 w 列的矩阵中,通过设计使得尽可能多的行或列能满足题中的平衡条件。

如果行数(列数)是奇数,那么每一列(行)一定不能平衡,就要按照满足每一行(列)平衡,输出“ () “;若行数和列数同时是奇数,则设计不出任何一行或一列平衡;

当行数和列数同时为偶数时,情况是最复杂的,开始的时候只是想到两个数字谁大就去满足谁的平衡,结果完全不对,因为不只是“ ()()() ”是平衡的,像“ ((())) ”这种也是平衡的。也就是说在行满足平衡条件的同时列也可能满足平衡条件,比如:

" (((( " 就在满足每一列平衡的同时多满足了一行,然后......然后我智商就不够了。看了别人的博客才知道,可以通过“牺牲”掉最外面的一圈,也就是两行和两列,其他各行各列就都能平衡,也就是都能达到 ans = h + w - 4 ;但是在行数和列数的最小值小于 4 的时候,这种

()()     “牺牲”的做法并不是最优的,此时通过暴力的方法去枚举找到(2,2),(2,4),(4,2),(4,4)的图案即可。

)()(    这种做法是怎么想出来的呢?请移步去大佬的博客吧.......

))))

 #include <bits/stdc++.h>
using namespace std;
int main()
{
int t,a,b;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&a,&b);
if((a&)&&(b&))
{
for(int i = ; i < a; i++)
{
for(int j = ; j < b; j++)
printf("(");
printf("\n");
}
}
else if((a&)&&!(b&))
{
for(int i = ; i < a; i++)
{
for(int j = ; j < b; j++)
if(j&) printf(")");
else printf("(");
printf("\n");
}
}
else if(!(a&)&&(b&))
{
for(int i = ; i < a; i++)
{
for(int j = ; j < b; j++)
if(i&) printf(")");
else printf("(");
printf("\n");
}
}
else
{
/* if(a > b)
{
for(int i = 0; i < a; i++)
{
for(int j = 0; j < b; j++)
if(j&1) printf(")");
else printf("(");
printf("\n");
}
}
else
{
for(int i = 0; i < a; i++)
{
for(int j = 0; j < b; j++)
if(i&1) printf(")");
else printf("(");
printf("\n");
}
}
*/
if(a== && b==)
{
puts("()");
puts(")(");
continue;
}
if(b==)
{
for(int i = ; i < a; i++)
puts("()");
continue;
}
if(a==)
{
for(int i = ; i < b; i++)
printf("(");
printf("\n");
for(int i = ; i < b; i++)
printf(")");
printf("\n");
continue;
}
if(a==)
{
for(int i = ; i < b; i++)
printf("(");
printf("\n");
for(int i = ; i < b; i++)
{
if(i < b/)printf(")");
else printf("(");
}
printf("\n");
for(int i = ; i < b; i++)
{
if(i < b/)printf("(");
else printf(")");
}
printf("\n");
for(int i = ; i < b; i++)
printf(")");
printf("\n");
continue;
}
if(b==)
{
for(int i = ; i < a; i++)
{
if(i < a/) puts("()()");
else puts("(())");
}
continue;
}
for(int i = ; i < a; i++)
{
for(int j = ; j < b; j++)
{
if(i == || j == ) printf("(");
else if(i == a- || j == b-) printf(")");
else
{
if(j == ) printf("(");
else if(j == b-) printf(")");
else
{
if(!(i&))
if(j&) printf("(");
else printf(")");
else
if(j&) printf(")");
else printf("(");
}
}
}
printf("\n");
}
}
}
return ;
}

HDU 6400(括号组合 ~)的更多相关文章

  1. Leetcode22. Generate Parentheses(生成有效的括号组合)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/74937307冷血之心的博客) 题目如下:

  2. PHP美元符和花括号组合那些事—${${}}

    双美元符+{}:${${variable}}是一种比较常见的用法,但是它的实现原理是什么呢?今天来探究一下: 提及这种用法,还得先说一下PHP的String类型php.net上指出,一个字符串可以用4 ...

  3. hdu 4915 括号匹配+巧模拟

    http://acm.hdu.edu.cn/showproblem.php?pid=4915 给定一个序列,由()?组成,其中?可以表示(或者),问说有一种.多种或者不存在匹配. 从左向右,优先填满n ...

  4. LeetCode 32 Longest Valid Parentheses(最长合法的括号组合)

    题目链接: https://leetcode.com/problems/longest-valid-parentheses/?tab=Description   Problem :已知字符串s,求出其 ...

  5. HDU 1521 排列组合 指数型母函数

    排列组合 Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Status D ...

  6. Hdu 1521 排列组合

    a1 n1 a2 n2 ... ak nkn=n1+n2+...+nk从n个数中选r个排列(不是组合噢)// 指数型母函数// 模板#include <iostream> #include ...

  7. HDU 1536 S-Nim (组合游戏+SG函数)

    题意:针对Nim博弈,给定上一个集合,然后下面有 m 个询问,每个询问有 x 堆石子 ,问你每次只能从某一个堆中取出 y 个石子,并且这个 y 必须属于给定的集合,问你先手胜还是负. 析:一个很简单的 ...

  8. LeetCode 22 Generate Parentheses(找到所有匹配的括号组合)

    题目链接 : https://leetcode.com/problems/generate-parentheses/?tab=Description   给一个整数n,找到所有合法的 () pairs ...

  9. hdu 6400 Parentheses Matrix

    题目链接 Problem Description A parentheses matrix is a matrix where every element is either '(' or ')'. ...

随机推荐

  1. day4 linux安装python

    linux 安装 python centos6 默认安装的是2.6,如果需要安装更高版本需要手动下载安装 下载源码包wget https://www.python.org/ftp/python/3.5 ...

  2. 爬虫_豆瓣全部正在热映电影 (xpath)

    单纯地练习一下xpath import requests from lxml import etree def get_url(url): html = requests.get(url) retur ...

  3. MT【256】2016四川高考解答压轴题

    (2016四川高考数学解答压轴题)设函数$f(x)=ax^2-a-\ln x,a\in R$. 1)讨论$f(x)$的单调性;2)确定$a$的所有可能值,使得$f(x)>\dfrac{1}{x} ...

  4. Hdoj 2289.Cup 题解

    Problem Description The WHU ACM Team has a big cup, with which every member drinks water. Now, we kn ...

  5. [bzoj2288][pojChallenge]生日礼物【贪心+堆+链表】

    题目描述 ftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, -, AN. 她被允许选择不超过 M 个连续的部分作为自己的生日礼物. 自然地,ftiasch想要知 ...

  6. [NOI2014]购票(斜率优化+线段树)

    题目描述 今年夏天,NOI在SZ市迎来了她30周岁的生日.来自全国 n 个城市的OIer们都会从各地出发,到SZ市参加这次盛会. 全国的城市构成了一棵以SZ市为根的有根树,每个城市与它的父亲用道路连接 ...

  7. javascript正则表达式---正向预查

    什么是正向预查?这里有腾讯招聘的一个例子: 如何给一串数字用千分制表示?比如9999999999变成9,999,999,999.这样一个问题你会怎么答呢?博主js正则学的不咋样,然后用操作字符串的办法 ...

  8. 我们如何用Go来处理每分钟100万复杂请求的场景

    在Malwarebytes我们经历了显著的增长,自从我一年前加入了硅谷的公司,一个主要的职责成了设计架构和开发一些系统来支持一个快速增长的信息安全公司和所有需要的设施来支持一个每天百万用户使用的产品. ...

  9. jquery 事件的绑定,触发和解绑

    js和jquery绑定的区别? HTML或原生js是单一对应绑定的,绑多了只留最后一个.jQuery是追加绑定的,绑多少执行多少.这个在每一本jQuery的书中都是首先提到的事情. jquery绑定与 ...

  10. poj3349 Snowflake Snow Snowflakes

    吼哇! 关于开散列哈希: 哈希就是把xxx对应到一个数字的东西,可以理解成一个map<xxx, int>(是不是比喻反了) 我们要设计一个函数,这个函数要确保同一个东西能得到相同的函数值( ...