XTU 1123 duoxida的數位遊戲

2020-08-11 16:35:14

duoxida的數位遊戲題目描述

duoxida很喜歡玩數位遊戲,某天無聊的時候,他決定一個人玩數位遊戲。他黑板上寫下了一行總共有n個數,然後對其重複進行一個操作: 找到從左到右第k個的數x,在數位序列的最右邊增加一個x,刪除最左邊的第一個數位。 duoxida很想知道知道多少次操作後,這個序列就變得完全一樣。
輸入
數據的第一行爲一個整數t,1<=t<=10,表示測試用例的個數。每組樣例的第一行是n,k,(1≤k≤n≤1000)。 接下來一行有n個整數。
輸出
每個用例輸出一行,即操作次數,如果這個序列無法變得完全一樣,輸出"-1"。
樣例輸入

2
3 2
3 1 1
3 1
3 1 1

樣例輸出

1
-1

思路

這個題先判斷第k個數是否與k後面的數都相等,相等則可以實現,可以實現則判斷操作的次數;若有不相等的數則不能實現,輸出-1。
判斷操作次數爲(k-1)減去前面的數中和第k個數相等相鄰的數的個數,例如3 1 1 1 1這五個數,如果k爲3,則需要(k-1)-1=1次,若k爲4,則需要(k-1)-2次即可。如果是1 3 1 1 1這五個數,當k爲3時則需要(k-1)-0=2次。

程式碼

#include<stdio.h>
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n,k;
        scanf("%d %d",&n,&k);
        int str[1001];
        for(int i=0; i<n; i++)
        {
            scanf("%d",&str[i]);
        }
        int flag=1;
        int a=str[k-1];
        for(int i=k; i<n; i++)
        {
            if(a!=str[i])
            {
                flag=0;
                break;
            }
        }
        if(flag==0)
            printf("-1\n");
        else
        {
            int sum=0;
            for(int i=k-2; i>0; i--)
            {
                if(str[i]==a)
                {
                    sum++;
                }
                else
                    break;
            }
            printf("%d\n",k-1-sum);
        }
    }
    return 0;
}                            

本人菜雞一枚,如有不對,歡迎指正。