棋盘2
Description
设有一个n*m方格的棋盘(1≤m,n≤100)。
求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。
例如:当n=2,m=3时
正方形的个数有8个(边长为1的正方形有6个,边长为2的正方形有2个);
长方形的个数有10个(2*1的长方形有4个,1*2的长方形有3个,3*1的长方形有2个,3*2的长方形有1个)
Input
n和m。
Output
正方形的个数与长方形的个数。
Samples
input Copy
2 3
output Copy
8 10
#include <stdio.h>
int z=0,c=0;
void count(int n,int m);
int main()
{
int n,m;
scanf("%d %d",&n,&m);
count(n,m);
printf("%d %d\n",z,c);
}
void count(int n,int m)
{
int i,j,r,l;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
for(r=1;i+r<=n;r++)
{
for(l=1;j+l<=m;l++)
{
if(r==l)
++z;
else
++c;
}
}
}
}
}
就是子图概念,题目不要紧,要紧的是以坐标的概念,和图的行列结合起来的方法值,以坐标的动态变化来关联行列的动态变化,当然找规律也是行的就是要浪费很多时间,找错还要崩溃,这类题优先做法是类推,以前一步,推到后一步,加油。