快乐的跳跃者问题

本文介绍了一个算法问题的解决方法,该问题涉及判断一系列整数是否满足特定条件,即相邻数之间的差的绝对值能否覆盖1到n-1的所有整数。通过一个C++程序实例,详细展示了如何通过输入一组整数来判断其是否符合'小K去次⑩'的定义,并提供了完整的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果有n个数, 这n个数中相邻数之间的差的绝对值能够取遍[1,n-1]之间所有的整数.那么就是'小K去次⑩' 否则 就是 '小P去次⑩' 现在问你 到底是谁去次⑩?

例如:1 4 2 3 就是是'小K去次⑩' ,因为相邻数之差的绝对值分别为3、2、1。

 

输入

有T组测试数据。输入的第一行是数据组数T,其后每一行是一组测试数据。每行包含一个整数n(n≤300),然后是n个整数,表示一个输入序列

 

输出

对于输入的每一行,输出一行 'K' 或者 'P' 

 

样例输入

2 
4
1 4 2 3
5 
1 4 2 -1 6

 

样例输出

K  
P

#include<iostream>

#include<math.h>

using namespace std;

void Hj(){

    int Num;

    int n;

    int number1,number2;

    int sub,flag=0;

    int *a;

    int i,j;

    cin>>Num;

    for(int j=0;j<Num;j++) {

        flag=0;

        cin>>n;

        a=new int[n]();

        cin>>number1;

        for(int i=1;i<n;i++){

            cin>>number2;

            sub=abs(number2-number1);

     

            if(sub<n && sub>=1){

                if(a[sub]==0){

                    a[sub]=1;

                    flag++;

             

                }

            }

            number1=number2;

        }

         

        if(flag==n-1){

 

            cout<<"K"<<endl;

             

        }

        else{

             

            cout<<"P"<<endl;

        }

         

    }

}

int main() {

    Hj();

    return 0;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值