zoukankan      html  css  js  c++  java
  • Snakes & Ladders ——BFS入门题

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=116&page=show_problem&problem=555

    题目大意:

      给一个棋盘,分布着蛇和梯子,投骰子确定走的步数,问最少投几次骰子可以到达终点,到达蛇头就回到蛇尾,到达梯子底部就上升到梯子顶部。

    思路:

      BFS,到达每一个节点都可以扩展出6个节点,判断终点是不是到达过,如果到达过,退出循环。

    这题WA了……

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <cstring>
     5 #include <cctype>
     6 #include <stack>
     7 #include <queue>
     8 #include <map>
     9 #include <set>
    10 #include <vector>
    11 #include <cmath>
    12 #include <algorithm>
    13 #define lson l, m, rt<<1
    14 #define rson m+1, r, rt<<1|1
    15 using namespace std;
    16 typedef long long int LL;
    17 const int MAXN =  0x3f3f3f3f;
    18 const int  MIN =  -0x3f3f3f3f;
    19 const double eps = 1e-9;
    20 const int dir[8][2] = {{0,1},{1,0},{0,-1},{-1,0},{-1,1},
    21   {1,1},{1,-1},{-1,-1}};
    22 int D, N , S, L, a[23*23], b[23*23];
    23 typedef struct La{
    24   int start, end;
    25 }La;
    26 La la[120];
    27 int main(void){
    28 #ifndef ONLINE_JUDGE
    29   freopen("arb.in", "r", stdin);
    30 #endif
    31   scanf("%d", &D);
    32   while (D--){
    33     scanf("%d%d%d", &N, &S, &L); int i , j, k, s;
    34     for (i = 1; i <= S + L; ++i){
    35       scanf("%d%d", &la[i].start, &la[i].end);
    36     } memset(a, 0, sizeof(a));
    37     memset(b, 0, sizeof(b)); b[1] = 1;
    38     int cnt = 0; bool flag = false;
    39     while (a[N*N] == 0){
    40       memcpy(a, b, sizeof(b));
    41       memset(b, 0, sizeof(b));
    42       for (i = 1; i < N*N; ++i){
    43         if (!a[i]) continue;
    44         for (j = 1; j <= 6; ++j){
    45           if (j + i > N*N) break;
    46           flag = false;
    47           for (k = 1; k <= L + S; ++k){
    48             if (j + i == la[k].start){
    49               b[la[k].end] = 1; flag = true;
    50             }
    51           }
    52           if (!flag && !b[i+j]) b[i+j] = 1;
    53         }
    54       } cnt++;
    55     }
    56     cout << cnt-1 << endl;
    57   }
    58 
    59   return 0;
    60 }

    交了,WA……

  • 相关阅读:
    定义函数
    变量与常量
    字符串与格式化
    字符串与编码
    字符编码
    元组-tuple
    列表-list
    分支和循环
    润乾配置连接kingbase(金仓)数据库
    润乾报表在proxool应用下的数据源配置
  • 原文地址:https://www.cnblogs.com/liuxueyang/p/3025500.html
Copyright © 2011-2022 走看看