zoukankan      html  css  js  c++  java
  • CodeForces 669B

    链接:http://codeforces.com/problemset/problem/669/B

    本文链接:http://www.cnblogs.com/Ash-ly/p/5443086.html

    题意:

      有个闲的没事干的人找到了一个能跳的小动物,把它放到一个连续的格子中,每个格子都有两个属性,一个是方向">"和"<",分别表示如果到了该格子只能向左(<)跳或者相右跳(>).另外一个属性是能跳多远,比如这个属性是3,那么它到这个格子只能选择往左或者往右跳3步.开始时刻这个小动物在第一个格子,问最后能否调出这个连续的格子,还是永远在这个格子里跳来跳去的循环下去.

    思路:

      如果出不去则说明它跳的路径肯定在这些格子里面形成了一个循环节,而出现循环节的原因就是它又回到了某个它曾经走过的地方,所以如果某个格子它跳了两次,那么它肯定出不去了.

    代码:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     int n;
     7     scanf("%d", &n);
     8     char s[100000 + 7] = {0};
     9     scanf("%s", s);
    10     int a[100000 + 7] = {0};
    11     for(int i = 0; i < n ; i++)
    12         scanf("%d", &a[i]);
    13     int cnt = 0;
    14     long long jmp = 0;
    15     int flag[100000] = {0};
    16     int ans = 0;
    17     int i = 0;
    18     while(true)
    19     {
    20         s[i] == '>' ? jmp += a[i] : jmp -= a[i];
    21         if(jmp >= 0 && jmp < n)
    22         {
    23             i = (int)jmp;
    24             if(flag[i] == 0) flag[i] = 1;
    25             else    break;
    26         }
    27         else
    28         {
    29             ans = 1;
    30             break;
    31         }
    32     }
    33     if(ans) printf("FINITE
    ");
    34     else printf("INFINITE
    ");
    35     return 0;
    36 }
  • 相关阅读:
    git学习
    小程序强制自动更新
    UI设计规范
    2019前端面试题汇总(vue)
    技术面试笔试题
    阿里云万网虚拟主机安装配置Https(SSL)教程
    [转]Vue项目全局配置微信分享思路详解
    Elasticsearch学习笔记之—分词器 analyzer
    合成图片+合成文字+图片
    C# 在Bitmap上绘制文字出现锯齿的问题
  • 原文地址:https://www.cnblogs.com/Ash-ly/p/5443086.html
Copyright © 2011-2022 走看看