电子狗的心事

简介: 电子狗的心事

一、题目概述

计算机程序世界中有一位孤独的电子狗,这个电子狗每次只能执行一种操作指令:朝着现在的方向前进X米,然后左转。 电子狗认为,它不断的执行这样的指令,最终有一条指令,能使它回到曾经走过的地方。 然而,实际上,当它已经执行完给定它的n条指令时,并不一定会回到它曾经走过的地方。

并且,电子汪很想知道结果。如果给了它n条指令,在第几条指令时,它能第一次回到自己已经走过的地方。如果指令执行完,都没有回到它曾经走过的地方,电子汪将会十分伤心,这个时候请输出“regret”。

输入格式:

第一行为T,表示输入数据组数。 每组数据的第一行包含一个数n,表示指令长度。接着一行包含n个数字ai,表示第i个指令中,前行的距离。

1<=T<=100

1<=n<=1 000 000

1<=ai<=1 000 000 000

输出格式:

对每组数据输出第一次回到已经走过的位置时为第几条指令。 如果电子汪最终没有回到过自己走过的地方,请输出“regret”。

二、思路分析

由于电子狗每前进Xm,就要进行左转,所以有以下的三种情况电子狗能回到已经走过的位置:


三、代码实现

对于上述分析,有以下代码来进行实现:

#include<stdio.h>
int a[1000000] = { 0 };
int main()
{
  int count = 0;
  scanf("%d", &count);
  while (count--)
  {
    int n = 0;
    int first = 0;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    {
      scanf("%d", &a[i]);
    }
    if (n <= 3)
    {
      printf("regret\n");
            continue;
    }
    for (int i = 4; i <= n; i++)
    {
      if (i >= 4)
            {
                 if(a[i - 3] >= a[i - 1] && a[i - 2] <= a[i])
                    {
                        first = i;
                        break;
                    }
            } 
      if (i >= 5 )
            {
            if(a[i - 3] == a[i - 1] && a[i - 2] <= a[i] + a[i - 4])
      {
        first = i;
        break;
      }
            } 
      if (i >= 6 )
            {
            if(a[i - 3] <= a[i - 1] + a[i - 5] && a[i - 2] <= a[i] + a[i - 4]&&a[i-1]<=a[i-3]&&a[i-4]<=a[i-2])
      {
        first = i;
        break;
      }
            } 
    }
    if (first > 0)
    {
      printf("%d\n", first);
    }
    else
    {
      printf("regret\n");
    }
  }
    return 0;
}



目录
相关文章
|
6月前
|
算法 安全 Java
Java多线程
Java多线程
37 2
|
6月前
|
安全 Java 索引
Java字符串类详解
Java字符串类详解
47 1
|
6月前
|
机器学习/深度学习 编解码 人工智能
CVPR 2023的46篇AIGC应用论文+部分代码汇总
CVPR 2023的46篇AIGC应用论文+部分代码汇总
817 0
|
5月前
|
存储 SQL 算法
LeetCode第53题:最大子数组和【python 5种算法】
LeetCode第53题:最大子数组和【python 5种算法】
|
6月前
|
消息中间件 存储 监控
|
6月前
|
前端开发 JavaScript PHP
解决在页面中无法获取qrcode.js生成的base64的图片
该文档介绍了如何解决在部分安卓手机上无法正确加载二维码图片的问题。之前的方法是使用qrcode.js生成二维码,然后与背景图结合用canvas绘制海报,但在某些安卓设备上遇到onload事件不触发的问题。
105 2
|
6月前
|
前端开发 Java 测试技术
在线阅读网站|基于Springboot+Vue开发实现小说阅读网站(二)
在线阅读网站|基于Springboot+Vue开发实现小说阅读网站
225 0
|
12月前
|
开发工具
新人乘风者礼品兑换指南
仅限2023年11月15日(含11月15日)后入驻博主用于兑换礼品,此前完成入驻的博主按原邮寄方式进行。
4351 2
|
Rust 数据安全/隐私保护
Fuso代理工具的初体验(端口映射+多层代理)
一款快速、稳定、跨平台、高效的内网穿透,端口转发工具,传输采用aes、rsa加密,利用rust开发,可以当作frp的rust版本,杀软还暂时不杀,支持socks代理、多级代理,暂时不支持kcp协议,程序仍处于开发阶段
899 0
|
Java 容器
Gradle从0入门到实战系列【四】build.gradle之Task
任务是gradle的最小执行单元,一个build.gradle是由一系列的task组成,重要性不言而喻,在前面课程中我们或多或少做了一些了解,接下来我们真正认识task。
533 0
Gradle从0入门到实战系列【四】build.gradle之Task