📚Description:
牌王和图王在玩一个游戏。
他们需要轮流移动字符串上的L,R指针,最后一位无法移动的人会输掉游戏。
给定一个字符串 s ,起初有两个指针 L 和 R 都指向字符串的下标为k的位置(1 <= k <= | s |,|s|表示字符串的长度)。牌王和图王轮流移动指针,重复若干个回合,在这几个回合之中,他们的行动需要满足如下条件:
-  牌王先手; 
-  每次只能将 L 指针向左挪动,或者将 R 指针向右挪动,必须保证挪动后[L,R]之间的字符串比前一个操作中[L,R]之间的字符串的字典序更小; 
-  每个人只能在上个人操作之后的指针的基础上操作(若牌王将指针移到 L= 1,R= 2 的位置,那么图王只能从 L= 1,R= 2 的位置开始操作,反之也是); 
-  最后一个无法移动的玩家会输掉比赛。 
牌王认为这个游戏很没有意思,因为他认为只要给他一个串和起始的位置 k ,就能够知道自己是否能够胜利。现在牌王想考考你,对于任何一个位置 k ,他能否胜利。
⏳Input:
第一行一个整数 T (1 < T< 1000)
接下去每行有一个字符串 s(1 <= |s| <= 1000),保证字符串 s 中仅包含小写字母。
 
🔑Output:
对于每个字符串s,输出|s|个数字,分别代表k=1,2,3,…,|s|时的答案,Yes(代表牌王胜利)或者No(牌王失败)
👨🏫 Sample Input:
3
cbabc
aaa
cba
💡Sample Output:
No
No
No
Yes
Yes
No
No
No
No
No
No
🙋思路
题目不难,理解了就可以了
 其实就是左边能不能移动
 如果可以向左边移动一次
 那就是牌王赢了
 如果不可以
 那就是牌王输了
 因为右移肯定是字典序变大(自己体会)
AC Code
#include <stdio.h>
#include <string.h>
int main(){
	int t;
	scanf("%d",&t);
	while(t--){
		char str[1000];
		scanf("%s",str);
		int len =strlen(str);
		for(int k=0;k<len;k++){
			if(k == 0){  //只能右移 (肯定输) 
				printf("No\n"); 
			}
			else{ 
				int i;
				for(i=k;i>=0;i--){
					if(str[i]<str[k])
						break;
				}
				if(i == -1)  //说明没办法左移
					printf("No\n");
				else
					printf("Yes\n"); 
			}
		}
	}
}




















