电子狗的心事

简介: 电子狗的心事

一、题目概述

计算机程序世界中有一位孤独的电子狗,这个电子狗每次只能执行一种操作指令:朝着现在的方向前进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;
}



目录
相关文章
|
4月前
|
Java 编译器
Java异常处理机制
Java异常处理机制
29 1
|
4月前
|
算法 安全 Java
Java多线程
Java多线程
35 2
|
4月前
|
安全 Java 索引
Java字符串类详解
Java字符串类详解
39 1
|
4月前
|
机器学习/深度学习 编解码 人工智能
CVPR 2023的46篇AIGC应用论文+部分代码汇总
CVPR 2023的46篇AIGC应用论文+部分代码汇总
792 0
|
4月前
|
消息中间件 存储 监控
|
4月前
|
前端开发 Java 测试技术
在线阅读网站|基于Springboot+Vue开发实现小说阅读网站(二)
在线阅读网站|基于Springboot+Vue开发实现小说阅读网站
177 0
|
10月前
|
开发工具
新人乘风者礼品兑换指南
仅限2023年11月15日(含11月15日)后入驻博主用于兑换礼品,此前完成入驻的博主按原邮寄方式进行。
3987 2
|
Rust 数据安全/隐私保护
Fuso代理工具的初体验(端口映射+多层代理)
一款快速、稳定、跨平台、高效的内网穿透,端口转发工具,传输采用aes、rsa加密,利用rust开发,可以当作frp的rust版本,杀软还暂时不杀,支持socks代理、多级代理,暂时不支持kcp协议,程序仍处于开发阶段
840 0
|
Java 容器
Gradle从0入门到实战系列【四】build.gradle之Task
任务是gradle的最小执行单元,一个build.gradle是由一系列的task组成,重要性不言而喻,在前面课程中我们或多或少做了一些了解,接下来我们真正认识task。
499 0
Gradle从0入门到实战系列【四】build.gradle之Task
|
Kubernetes 容器
【k8s】单节点master部署
文章目录 前言 一、部署k8s(二进制) 1.1 架构
334 0