zoukankan      html  css  js  c++  java
  • POJ 1059 Chutes and Ladders

    1. 一下午就做了这么一道题,蛋疼的模拟题。刚开始没有考虑当超过100的时候怎么处理,一直WA,上网看解题报告才知道。。。

    2. memset()函数的用法。只能初始化为0或者-1。当初始值为其他数时,是在每一位上是这个数(这句话没明白),记住只能把数组初始化为0或者-1就行了;

    3. 此题属于模拟题,不得不说,模拟题的if语句就是多啊;


    #include <iostream>
    #include <cstring>
    using namespace std;
    
    int main()
    {
        int step[100], map[101], turn[7], cur[7];
        int step_num, i, peo, sx, ex, again, ans, j;
        memset(step, 0, sizeof(step));
        i = 0;
        while (cin >> step[i])
        {
            if (step[i] == 0)
                break;
            i++;
        }
        step_num = i - 1;
        while(cin >> peo)
        {
            if (peo == 0)
                break;
            memset(map, 0, sizeof(map));
            while (cin >> sx >> ex)
            {
                if (sx == 0 && ex == 0)
                    break;
                else map[sx] = ex;
            }
            while (cin >> again)
            {
                if (again == 0)
                    break;
                else if (again > 0)
                    map[again] = -1;//重新扔一次
                else map[-again] = -2;//下次不扔
            }
            memset(turn, 0, sizeof(turn));//为0表示不turn
            memset(cur, 0, sizeof(cur));
            for (i = 0, ans = 0; i <= step_num; i++)
            {
                if (!turn[ans])
                {
                    j = cur[ans] + step[i];
                    if (j == 100)
                        break;
                    if (j > 100)
                    {
                        ans = (ans + 1) % peo;
                        continue;
                    }
                    if (map[j] == 0)
                    {
                        cur[ans] = j;
                        ans = (ans + 1) % peo;
                        continue;
                    }
                    if (map[j] > 0)
                    {
                        cur[ans] = map[j];
                        ans = (ans + 1) % peo;
                        continue;
                    }
                    if (map[j] == -1)
                    {
                        cur[ans] = j;
                        continue;
                    }
                    if (map[j] == -2)
                    {
                        cur[ans] = j;
                        turn[ans] = 1;
    //                    continue;
                    }
                }
                else
                    turn[ans] = 0;
                ans = (ans + 1) % peo;
            }
            cout << ans + 1 << endl;
        }
        return 0;
    }
    


  • 相关阅读:
    CentOS 6找不到partprobe命令的解决方法
    RTL源码归类与路径
    拓扑排序
    Char、AnsiChar、WideChar、PChar、PAnsiChar、PWideChar 的区别
    Delphi Byte与数据类型之间的转换
    Delphi byte[]转换为int
    Delphi Byte数组与Int String之间的相互转换
    delphi TTcpClient TTcpServer分析
    Delph7中TcpClient和TcpServer用法分析
    动态数组的使用
  • 原文地址:https://www.cnblogs.com/dollarzhaole/p/3188931.html
Copyright © 2011-2022 走看看