NOIP 1997 普及组 复赛 棋盘问题

    xiaoxiao2021-03-25  101

    NOIP 1997 普及组 复赛 棋盘问题

    1.初看没什么头绪,但画图模拟,很快能发现好的算法。

    2.采用坐标方式,确定左上角,右下角的坐标,进行减法处理,算出边长,很快能数出长方形、正方形个数。

    3.该题难在数学建模。

    附上AC代码,编译环境Dev-C++4.9.9.2

    #include <stdio.h> int main(){     int n,m;     int r1,c1,r2,c2,e1,e2;     int square=0,rect=0;     scanf("%d%d",&n,&m);     for(r1=0;r1<=n;r1++)         for(c1=0;c1<=m;c1++)             for(r2=r1+1;r2<=n;r2++)                 for(c2=c1+1;c2<=m;c2++){                     e1=r2-r1;                     e2=c2-c1;                     if(e1>0&&e2>0)                         if(e1==e2)                             square++;                         else                             rect++;                 }     printf("%d %d\n",square,rect);             }

    转载请注明原文地址: https://ju.6miu.com/read-20294.html

    最新回复(0)