zoukankan      html  css  js  c++  java
  • 【HDOJ】1978 How many ways

    DFS。

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 #define MAXNUM 105
     5 
     6 int map[MAXNUM][MAXNUM], ways[MAXNUM][MAXNUM], n, m;
     7 
     8 int dfs(int x, int y) {
     9     int i, j, way=0;
    10 
    11     if (ways[x][y])
    12         return ways[x][y];
    13 
    14     for (i=0; i<=map[x][y]; ++i) {
    15         for (j=0; i+j<=map[x][y]; ++j) {
    16             if (i==0 && j==0)
    17                 continue;
    18             if (x+i>=n || y+j>=m)
    19                 continue;
    20             way += dfs(x+i, y+j);
    21             if (way >= 10000)
    22                 way %= 10000;
    23         }
    24     }
    25 
    26     ways[x][y] = way;
    27 
    28     return way;
    29 }
    30 
    31 int main() {
    32     int t;
    33     int i, j;
    34 
    35     scanf("%d", &t);
    36 
    37     while (t--) {
    38         scanf("%d %d", &n, &m);
    39         memset(ways, 0, sizeof(ways));
    40         for (i=0; i<n; ++i)
    41             for (j=0; j<m; ++j)
    42                 scanf("%d", &map[i][j]);
    43         ways[n-1][m-1] = 1;
    44         i = dfs(0, 0);
    45         printf("%d
    ", i);
    46     }
    47 
    48     return 0;
    49 }
  • 相关阅读:
    学习进度14
    学习进度13
    学习进度12
    2020.12.01 表单元素
    2020.12.02 表单属性
    2020.12.04
    2020.12.06
    2020.12.07
    2020.12.08 URL
    2020.12.09
  • 原文地址:https://www.cnblogs.com/bombe1013/p/3696811.html
Copyright © 2011-2022 走看看