zoukankan      html  css  js  c++  java
  • 1265=马拦过河卒

     1 #include<stdio.h>
     2 int main()
     3 {
     4     int n,m,c,b,i,j;
     5     scanf("%d %d %d %d",&n,&m,&c,&b);
     6     int a[20][20]= {0},t[20][20]= {0};//t作为标记数组,来标记这点是否可以通过。
     7     t[c][b]=1;//现将马所在的点标记为不可通过。
     8     int head[8]= {2,1,-1,-2,2,1,-1,-2},end[8]= {1,2,2,1,-1,-2,-2,-1};//表示马行走的坐标。
     9     for(i=0; i<8; i++)
    10     {
    11         if((c+head[i]>=0)&&(c+head[i]<=n)&&(b+end[i]>=0)&&(b+end[i]<=m))//马行走的也要在数据范围内。
    12         t[c+head[i]][b+end[i]]=1;//按照象棋行走的规则,将马下一步可走的点全部标记为不可通过。
    13     }
    14     a[0][0]=1;//这里是从起点开始,且要标记为1.
    15     for(j=0; j<=m; j++)
    16     {
    17         for(i=0; i<=n; i++)
    18         {
    19             if(t[i][j]==1)
    20             {
    21                 a[i][j]=0;//如果不能通过,则这里的a标记为0;
    22             }
    23             else if(i!=0&&j!=0)
    24             {
    25                 a[i][j]=a[i-1][j]+a[i][j-1];//讲左边和上边所代表的数加起来,表示达到这点的路径条数。
    26             }
    27             else if(i==0&&j!=0)//在边缘时,要查看左边和上边是否存在坐标。
    28             {
    29                 a[i][j]=a[i][j-1];
    30             }
    31             else if(j==0&&i!=0)
    32             {
    33                 a[i][j]=a[i-1][j];
    34             }
    35         }
    36     }
    37     printf("%d
    ",a[n][m]);
    38     return 0;
    39 }
  • 相关阅读:
    第十一周总结
    代码大全第二版-阅读笔记03
    第十周总结
    第十四周总结
    第十三周总结
    图书管理系统
    《软件需求模式》阅读笔记(三)
    第十二周总结
    语义分析
    第十一周总结
  • 原文地址:https://www.cnblogs.com/Angfe/p/10492494.html
Copyright © 2011-2022 走看看