POJ 1059 Chutes and Ladders

原创 2012年03月27日 16:56:25

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;
}


POJ--1059 Chutes and Ladders

一道关于模拟的水题,就是小时候常玩的那种游戏。
  • u014436243
  • u014436243
  • 2014年08月27日 10:08
  • 416

poj3107(树形dp)

Godfather Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5586   Acce...
  • d_x_d
  • d_x_d
  • 2015年11月26日 16:53
  • 1266

POJ Sudoku 数独填数(深搜)

题目:http://poj.org/problem?id=2676 思路:见代码: #include #include #include #include using namespace s...
  • xiaozhuaixifu
  • xiaozhuaixifu
  • 2013年10月03日 14:01
  • 2000

poj1729(bfs+优先队列优化)

Jack and Jill Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 1502   Accepted: 39...
  • update7
  • update7
  • 2017年07月29日 21:20
  • 17616

POJ--1059 Chutes and Ladders

一道关于模拟的水题,就是小时候常玩的那种游戏。
  • u014436243
  • u014436243
  • 2014年08月27日 10:08
  • 416

poj 2564 Edit Step Ladders 解题报告

  • 2012年10月12日 10:40
  • 2KB
  • 下载

Snakes and Ladders

描述 蛇和梯子游戏是一个非常流行的游戏。
  • u012325552
  • u012325552
  • 2014年08月03日 11:01
  • 623

[概率DP] LightOJ 1151 - Snakes and Ladders

1151 - Snakes and Ladders 题意: 有100个格子,从1开始走,每次随机走1~6。有n个格子会单向传送到其他格子,tp[i]表示从i传送到tp[i]。 1和100不会有传...
  • kg20006
  • kg20006
  • 2016年04月05日 16:07
  • 746

UVA 10566 && POJ 2507 Crossed Ladders (几何)

UVA 10566 && POJ 2507 Crossed Ladders (几何)
  • u013050857
  • u013050857
  • 2015年01月24日 16:53
  • 956

POJ:2507 Crossed ladders(二分+几何数学)

Crossed ladders Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5015  ...
  • zugofn
  • zugofn
  • 2016年07月27日 08:56
  • 249
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 1059 Chutes and Ladders
举报原因:
原因补充:

(最多只允许输入30个字)