第一行一个整数t,表示测试用例的组数;
接下来2*t行,每个测设用例包含2行;
第一行一个整数n,表示字符串的长度;
第二行一个字符串s
输入满足1<=t<=100,每个字符串只包含数字。
能则输出"YES",否则输出“NO"。
#include <iostream>
#include <cstring>
// 两个条件,长度必须为11位,且开头为8
//第一种情况:长度<11位,根本不可能,直接输出No
//第二种情况,长度刚好11位,只需判断开头是否为8
//第三种情况,长度>11位,只要前n-num任意一位有8,都可以通过删除操作达到条件
//(注意此处只能进行删除操作,所以可以排除n-num后面有8也可以达到的情况)
//输入多组数据要怎么写?
using namespace std;
int main()
{
int t,n;
int num=0;
int m=0;
cin>>t;
while(t--!=0) //控制输入多组数据
{
while((cin>>n)&&n!=0) // n为字符串的长度,第2行为字符串
{
char s[n];
for(int j=0;j<n;j++) // 输入长度为n 的字符串
cin >> s[j];
// 再分情况讨论输出结果
if(n<11)
{cout <<"NO" <<endl; break;}
else if(n==11)
{
if(s[0]=='8') {cout << "YES" <<endl;break;}
else {cout << "NO" <<endl;break;}
}
else if(n>11) // 当长度大于11,只要前n-num任意一位有8,都可以通过删除操作达到条件
// 此处并没有让写删除操作,只是让判断能不能通过任意删除操作达到目的
{
int nnm=0;
num=n-11;
for(m=0;m<=num;m++)
{
if(s[m]=='8')
nnm++;
}
if(nnm>=1) cout << "YES" <<endl;
else cout << "No" <<endl;
}
}
}
return 0;
}
测试结果