zoukankan      html  css  js  c++  java
  • Codevs 2693 上学路线(施工)

    时间限制: 2 s    空间限制: 16000 KB    题目等级 : 黄金 Gold
    题目描述 Description

    问题描述

     你所在的城市街道好像一个棋盘,有a条南北方向的街道和b条东西方向的街道。

       南北方向a条街道从西到东依次编号为1到a,而东西方向的b条街道从南到北依次编号为1到b,南北方向的街道i和东西方向的街道j的交点记为(i,j)。

       假定你住在(1,1)处,而学校在(a,b)处,你骑自行车去上学,自行车只能沿着街道走,而且为了缩短时间只允许沿着东、北方向行驶。

       现在有n个交叉路口在施工(X1,Y1),(X2,Y2),(Xn,Yn),这些路口暂时不能通车。问你上学有多少种走法?

    输入描述 Input Description

      共二行。

      第一行包含两个整数a和b,并且满足1<=a,b<=16.

      第二行包含一个整数n,表示有n个路口在维修(1<=N<=40)。

      接下来的n行,每行两个整数X_i、Y_i,描述路口的位置。

    输出描述 Output Description

    输出一个整数表示从(1,1)到(a,b)的骑车路线总数。

       只有一行

    样例输入 Sample Input

    5 4

    3

    2 2

    2 3

    4 2

    样例输出 Sample Output

    5

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 using namespace std;
     5 int f[42][42],n,m,k,x,y,vis[42][42];
     6 int main()
     7 {
     8     memset(vis,0,sizeof(vis));
     9     memset(f,0,sizeof(f));
    10     scanf("%d%d%d",&n,&m,&k);
    11     for(int i=1;i<=k;i++)
    12     {
    13         scanf("%d%d",&x,&y);
    14         vis[x][y]=1;
    15     }
    16     f[1][1]=1;
    17     for(int i=1;i<=n;i++)
    18     {
    19         for(int j=1;j<=m;j++)
    20         {
    21             if(i==1&&j==1) continue;
    22             if(vis[i][j]) continue;
    23             f[i][j]=f[i-1][j]+f[i][j-1];
    24         }
    25     }
    26     printf("%d",f[n][m]);
    27     return 0;
    28 }

    思路:简单DP~~  时间给了两秒,应该搜索也能过

  • 相关阅读:
    php第九节课
    php第八节课
    php第七节课
    php第六讲
    php第五节课
    php第四节课
    php第三节课
    Golang Slice切片
    Golang 反射
    Golang 流程控制
  • 原文地址:https://www.cnblogs.com/suishiguang/p/6157018.html
Copyright © 2011-2022 走看看