hdu 2524 矩形A + B

矩形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的网格.
hdu 2524 矩形A + B_第1张图片
 

Input
第一行输入一个t, 表示有t组数据,然后每行输入n,m,分别表示网格的高和宽 ( n < 100 , m < 100).
 

Output
每行输出网格中有多少个矩形.
 

Sample Input
   
   
   
   
2 1 2 2 4
 

Sample Output
   
   
   
   
3 30
 
/*题解:
    找规律问题 
*/  


如图是一个3X4网格:

hdu 2524 矩形A + B_第2张图片

看第一行:格数为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;
}












你可能感兴趣的:(C++,HDU)