题目:
思路:用一个数组记录图形的形状比如shape[i][j]中(0,0)到(i,j)的矩形就是用其表示。该图形可以向下走n-(i-1),向右可走m-(j-1)个位置。因此shape[i][j]=(n-(i-1))*(m-(j-1))。
代码:
#include<iostream>
using namespace std;
int shape[101][101];
int main()
{
int n, m; cin >> n >> m;
int c_sun = 0,z_sun=0;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
shape[i][j] = (n - (i - 1)) * (m - (j - 1));
if (i == j)z_sun += shape[i][j];
else c_sun += shape[i][j];
}
}
cout << z_sun << " " << c_sun;;
return 0;
}