HDU 2524 矩形A + B 解题心得
原题:
Description
给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形,下图为高为2,宽为4的网格.
Input
第一行输入一个t, 表示有t组数据,然后每行输入n,m,分别表示网格的高和宽 ( n < 100 , m < 100).
Output
每行输出网格中有多少个矩形.
Sample Input
2
1 2
2 4
Sample Output
3
30
分析:这道题目貌似是小学题目,就是多画画,找找规律就可以了
因为这道题目给的案例数量是最大是100*100,数据并不大,所以可以采取暴力打表,把所有可能的情况用总结出来的公式快速计算出来并存储在数组中,
具体案例就输出数组对应的数就可以了。
我的代码:
#include<iostream> #include<cstdio> using namespace std; int f[110][110]; int main() { f[1][1] = 1; for (int i =2; i < 110; i++) { f[1][i] = f[1][i - 1] + i; f[i][1] = f[i - 1][1] + i; } for (int i = 2; i < 110; i++) { for (int j = 2; j < 110; j++) { f[i][j] = f[i][1] * f[1][j]; } } int t; cin >> t; while (t--) { int n, m; cin >> n >> m; cout << f[n][m] << endl; } return 0; }