码迷,mamicode.com
首页 > 其他好文 > 详细

nyoj 206——矩形的个数——————【dp或公式】

时间:2015-05-24 20:14:09      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

矩形的个数

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
 
描述
在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3*1的矩形和1个3*2的矩形,总共18个矩形。

给出A,B,计算可以从中找到多少个矩形。
 
输入
本题有多组输入数据(<10000),你必须处理到EOF为止

输入2个整数A,B(1<=A,B<=1000)

输出
输出找到的矩形数。 
样例输入
1 2
3 2
样例输出
3
18

 dp:

#include<bits/stdc++.h>
using namespace std;
long long dp[1100][1100];
int main(){
    int A,B,i,j,k;
    for(i=1;i<1010;i++){
        for(j=1;j<1010;j++){
            dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+i*j;
        }
    }
    while(scanf("%d%d",&A,&B)!=EOF){
        printf("%lld\n",dp[A][B]);
    }
    return 0;
}

  

公式:

/*先考虑只有一行的情况,假设有b列 ,可以发现矩形长为b的有1个,b-1有2个,一直到长度为1,有b个 
    则这有(b+b-1+...+2+1) 
    列则一样的情况,(a+a-1+...+2+1),那么有一行,长度为b的有b*a,两行有b*(a-1) 
    。。。 
    那么总共有(b+b-1+...+2+1)*(a+a-1+...+2+1) 
    =(b+1)*b/2 * (a+1)*a/2 
*/
#include <stdio.h>
int main() {
    float a, b;
    while ( scanf ( "%f%f", &a, &b ) + 1 )
        printf ( "%.0f\n", ( a + 1 ) *a * ( b + 1 ) *b / 4 );
}
 

  

nyoj 206——矩形的个数——————【dp或公式】

标签:

原文地址:http://www.cnblogs.com/chengsheng/p/4526225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!