矩形A + B
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4262 Accepted Submission(s): 3294
Problem Description
给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形,下图为高为2,宽为4的网格.
Input
第一行输入一个t, 表示有t组数据,然后每行输入n,m,分别表示网格的高和宽 ( n < 100 , m < 100).
Output
每行输出网格中有多少个矩形.
Sample Input
Sample Output
/*题解:
找规律问题
*/
如图是一个3X4网格:
看第一行:格数为1的有4-1+1=4个。
在上述条件下,相对于格数为1关联的列有:
高为1的有3-1+1=3个,则表格中长为1且高为1的共3X4=12。
高为2的有3-2+1=2个,则表格中长为1且高为2的共2X4=8。
高为3的有3-3+1=1个,则表格中长为1且高为3的共1X4=4。
同理看第一行表格为2的有4-2+1=3个。
在上述条件下,相对于格数为2关联的列有:
高为1的有3-1+1=3个,则表格中长为2且高为1的共3X3=9。
高为2的有3-2+1=2个,则表格中长为1且高为2的共2X3=6。
高为3的有3-3+1=1个,则表格中长为1且高为3的共1X3=3。
同理看第一行表格为3的有4-3+1=2个。
在上述条件下,相对于格数为3关联的列有:
高为1的有3-1+1=3个,则表格中长为1且高为1的共3X2=6。
高为2的有3-2+1=2个,则表格中长为1且高为2的共2X2=4。
高为3的有3-3+1=1个,则表格中长为1且高为3的共1X2=2。
*******
将这些矩形全部相加即是网格中矩形总数。
具体代码:
#include<cstdio>
int main()
{
int t,n,m,s,i,j,a,b;
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&n,&m);
for(i=1,s=0; i<=n; i++)
{
for(j=1; j<=m; j++)
{
a=n-i+1;
b=m-j+1;
s += a*b;
}
}
printf("%d\n",s);
}
return 0;
}