• Simply Syntax(思维)


    Simply Syntax
    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 5551   Accepted: 2481

    Description

    In the land of Hedonia the official language is Hedonian. A Hedonian professor had noticed that many of her students still did not master the syntax of Hedonian well. Tired of correcting the many syntactical mistakes, she decided to challenge the students and asked them to write a program that could check the syntactical correctness of any sentence they wrote. Similar to the nature of Hedonians, the syntax of Hedonian is also pleasantly simple. Here are the rules: 


    0.The only characters in the language are the characters p through z and N, C, D, E, and I. 

    1.Every character from p through z is a correct sentence. 

    2.If s is a correct sentence, then so is Ns. 

    3.If s and t are correct sentences, then so are Cst, Dst, Est and Ist. 

    4.Rules 0. to 3. are the only rules to determine the syntactical correctness of a sentence. 

    You are asked to write a program that checks if sentences satisfy the syntax rules given in Rule 0. - Rule 4.

    Input

    The input consists of a number of sentences consisting only of characters p through z and N, C, D, E, and I. Each sentence is ended by a new-line character. The collection of sentences is terminated by the end-of-file character. If necessary, you may assume that each sentence has at most 256 characters and at least 1 character.

    Output

    The output consists of the answers YES for each well-formed sentence and NO for each not-well-formed sentence. The answers are given in the same order as the sentences. Each answer is followed by a new-line character, and the list of answers is followed by an end-of-file character.

    Sample Input

    Cp
    Isz
    NIsz
    Cqpq

    Sample Output

    NO
    YES
    YES
    NO

    题解:

    0,p~z每个字母都是合法的句子

    1, 如s是一个合法的句子,那么Ns也是一个合法的句子

    2,如果s与t都是合法的一个句子,那么Cst, Dst, Est, and Ist.

    3,只有满足以上的才是一个合法的句子

    想的太多了,其实就按照所说的递归就好:

    代码:

    package com.hbc.week3;
    
    import java.util.Scanner;
    
    public class SimplySyntax {
        private static Scanner cin = null;
        static{
            cin = new Scanner(System.in);
        }
        static boolean judge(String s){
            char c = s.charAt(0);
            if(s.length() == 1){
                if(c >= 'p' && c <= 'z')
                    return true;
                else
                    return false;
            }
            
            if(c == 'N'){
                if(judge(s.substring(1))){
                    return true;
                }
                return false;
            }
            if(c == 'C'
                || c == 'D'
                || c == 'E'
                || c == 'I'){
                for(int i = 2; i < s.length(); i++){
                    if(judge(s.substring(1, i)) && judge(s.substring(i, s.length()))){
                        return true;
                    }
                }
                return false;
            }
            return false;
        }
        public static void main(String[] args) {
            //System.out.println(isSimpleSentence("pqp"));
            while(cin.hasNext()){
                String s = cin.next();
                if(judge(s)){
                    System.out.println("YES");
                }else{
                    System.out.println("NO");
                }
            }
        }
    }
  • 相关阅读:
    队列加分项
    队列课下作业
    20162306 2017-2018-1 《程序设计与数据结构》第7周学习总结
    20162306 2017-2018-1 《程序设计与数据结构》第5周学习总结
    20162306陈是奇 第一次实验报告
    20162306 2017-2018-1 《程序设计与数据结构》第3周学习总结
    20162306 陈是奇 2017-2018-1 《程序设计与数据结构》第1周学习总结
    数据库实验补充
    2017-2018-1 20162304 实验二 树
    队列加分项
  • 原文地址:https://www.cnblogs.com/handsomecui/p/6622440.html
Copyright © 2020-2023  润新知