3513 - 七龙珠

通过次数

0

提交次数

0

时间限制 : 5 秒 内存限制 : 256 MB

 近两年我们ACM协会参加了很多比赛,从省赛到邀请赛,从网络赛到区域赛,我们的ACM事业蒸蒸日上,现在已经能冲出山东走向亚洲啦~希望大家能够继续努力,争取在世界总决赛的舞台上为我们争光~

<span><span>&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:宋体;">我校</span><span>ACM</span><span style="font-family:宋体;">蒸蒸日上的原因有很多,据沈龙(神龙?)同学的传言,</span><span>2013</span><span style="font-family:宋体;">年冬,大家正走在训练完成回宿舍的路上,映雪湖畔一位白发苍苍的老爷爷出现在了他面前,身心俱疲的我们带着最后一丝希望问道:“请问我校</span><span>ACM</span><span style="font-family:宋体;">明年成绩如何?”“只要集齐七龙珠,就能让建大明年进入亚洲区域赛。”“哦?七龙珠?”“嗯,就是上面分别有一二三四五六七颗星的龙珠啊。”</span><span></span>

    随后的几天,我们就进入了寻找龙珠的过程中。现在呢,我们已经找到了一些龙珠,那么问题来了,挖掘机学校……哦不不不,请问我们的龙珠是不是找全了呢?

题目输入

 

<span style="font-family:宋体;">第一行有一个整数</span><span>n</span><span style="font-family:宋体;">,代表输入实例有</span><span>n(</span><span style="font-family:宋体;">题目保证</span><span>n&lt;=100)</span><span style="font-family:宋体;">组。</span><span></span>

<span style="font-family:宋体;">接下来的</span><span>n</span><span style="font-family:宋体;">行,每行为一个字符串</span><span>k</span><span style="font-family:宋体;">(题目保证</span><span>k</span><span style="font-family:宋体;">的长度</span><span>&lt;=3000</span><span style="font-family:宋体;">),</span><span></span>

<span style="font-family:宋体;">字符串中每出现一个连续的“</span><span>one</span><span style="font-family:宋体;">”,代表一星龙珠</span><span></span>

<span style="font-family:宋体;">同理,“</span><span>two</span><span style="font-family:宋体;">”代表二星龙珠</span><span></span>

<span style="font-family:宋体;">“</span><span>three</span><span style="font-family:宋体;">”代表三星龙珠</span><span></span>

<span style="font-family:宋体;">“</span><span>four</span><span style="font-family:宋体;">”代表四星龙珠</span><span></span>

<span style="font-family:宋体;">“</span><span>five</span><span style="font-family:宋体;">”代表五星龙珠</span><span></span>

<span style="font-family:宋体;">“</span><span>six</span><span style="font-family:宋体;">”代表六星龙珠</span><span></span>

<span style="font-family:宋体;">“</span><span>seven</span><span style="font-family:宋体;">”代表七星龙珠</span><span></span>

<span style="font-family:宋体;">同样的龙珠可能找到不止一颗。</span><span></span>

<span style="font-family:宋体;">输入保证字符串中的字符全为小写字母。</span><span></span>

<span style="font-family:宋体;">字母可以出现连续。</span><span></span>

onetwo可以视为找到1,2两颗龙珠,twonetwoone都可以视为找到1,2两颗龙珠(因为他们都包含连续的one/two)。中间可能夹杂着无关字母,比如oneptwo,因为包含one/two,所以也可以被视为1,2两个龙珠。

题目输出

对于每组输入实例,请输出七种龙珠是否已经找齐。如果是,请输出“Yes”,否则请输出“No”。

输入/输出样例

输入格式

3
twonethreefourfivesixseven
oneatwobthreecfourdfiveesixfsevensevenseveneightnine
threedaysthreenights

输出格式

Yes
Yes
No

C语言解答

#include<stdio.h>
#include<string.h>
int main()
{int i,n;
 char k[3000];
 static char a[4]="one",b[4]="two",c[6]="three",d[5]="four",e[5]="five",f[4]="six",g[6]="seven"; 
 scanf("%d",&n);
 for(i=0;i<n;i++)
 { scanf("%s",k);
   if(strstr(k,a)!=0&&strstr(k,b)!=0&&strstr(k,c)!=0&&strstr(k,d)!=0&&strstr(k,e)!=0&&strstr(k,f)!=0&&strstr(k,g)!=0)
	   printf("Yes\n");
   else
	   printf("No\n");
 }
 return 0;
}

C++解答

#include <stdio.h>
#include <string.h>
#include <fstream>
#include <iostream>
using namespace std;

int main(void)
{
    int n;
    /*ifstream cin;
    ofstream cout;
    cin.open("b.in");
    cout.open("b.out");*/
    cin>>n;
    while(n--)
    {
        string s;
        int x1=0,x2=0,x3=0,x4=0,x5=0,x6=0,x7=0,sum=0,i;
        cin>>s;
        for(i=0;i<s.length();i++)
        if(i+2<s.length()&&s[i]=='o'&&s[i+1]=='n'&&s[i+2]=='e'&&x1==0) {x1=1;sum++;}
        else if(i+2<s.length()&&s[i]=='t'&&s[i+1]=='w'&&s[i+2]=='o'&&x2==0) {x2=1;sum++;}
        else if(i+4<s.length()&&s[i]=='t'&&s[i+1]=='h'&&s[i+2]=='r'&&s[i+3]=='e'&&s[i+4]=='e'&&x3==0) {x3=1;sum++;}
        else if(i+3<s.length()&&s[i]=='f'&&s[i+1]=='o'&&s[i+2]=='u'&&s[i+3]=='r'&&x4==0) {x4=1;sum++;}
        else if(i+3<s.length()&&s[i]=='f'&&s[i+1]=='i'&&s[i+2]=='v'&&s[i+3]=='e'&&x5==0) {x5=1;sum++;}
        else if(i+2<s.length()&&s[i]=='s'&&s[i+1]=='i'&&s[i+2]=='x'&&x6==0) {x6=1;sum++;}
        else if(i+4<s.length()&&s[i]=='s'&&s[i+1]=='e'&&s[i+2]=='v'&&s[i+3]=='e'&&s[i+4]=='n'&&x7==0) {x7=1;sum++;}
        if(sum==7)
            cout<<"Yes"<<endl;
        else
            cout<<"No"<<endl;
    }
    return 0;
}

Java解答

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner reader=new Scanner(System.in);
		int T=reader.nextInt();
		Main t=new Main();
		for(int i=0;i<T;i++){
			String s=reader.next();
			if(t.se(s)) System.out.println("Yes");
			else System.out.println("No");
		}
	}
	public boolean se(String s){
		int i1=s.indexOf("one");
		int i2=s.indexOf("two");
		int i3=s.indexOf("three");
		int i4=s.indexOf("four");
		int i5=s.indexOf("five");
		int i6=s.indexOf("six");
		int i7=s.indexOf("seven");
		if(i1>=0&&i2>=0&&i3>=0&i4>=0&&i5>=0&i6>=0&i7>=0)
		return true;
		else return false;
	}
}