zoukankan      html  css  js  c++  java
  • PAT乙级1003. 我要通过!(20)

    条件:

    1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
    2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
    3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。

    题目很长一半都是废话,写一下总结分析。

    由条件2可得,PAT、APATA、AAPATAA、AAAPATAAA……都对。

    结合上一条看条件3可得,

    1.如果PAT正确,那么PAAT也正确;如果PAAT正确,那么PAAAT也正确;……以此类推。

    2.如果APATA正确,那么APAATAA也正确;如果APAATAA正确,那么APAAATAAA也正确;……以此类推。

    3.如果AAPATAA正确,那么AAPAATAAAA也正确;……以此类推。

    ……

    以此类推。

    得出规律:A(…na…)A P A(…nb…)A T A(…nc…)A

    只要满足条件na*nb=nc就正确。

    #include <stdio.h>
    int main()
    {
            int i=0,n,j;
            int YN=1;    //NO=1;YES=0;
            int p1=0,t1=0;//pt的位置
            int p2=0,t2=0;//pt的次数
            scanf("%d",&n);
            for(j=0;j<n;j++) { //number
                p2=0;t2=0;
                YN=0;
                int flag1=0,flag=0;
                char a[128];
                scanf("%s",&a);
                printf("%s",a);//
                for(i=0;i<strlen(a);i++){
                    if(a[i]=='P'){//记录P的位置和次数
                        p1=i;
                        p2++;
                    }
                    if(a[i]=='T'){//记录T的位置和次数
                        t1=i;
                        t2++;
                    }
                    if(a[i]=='A'||a[i]=='P'||a[i]=='T') flag1++;//条件1
                }
                if(flag1==strlen(a)) flag++;
                //System.out.println(flag);
                //System.out.println(aa.length+" "+p1+" "+p2+" "+t1+" "+t2);
                if(p1*(t1-p1-1)==(strlen(a)-1-t1)) flag++;//na*nb=nc
                //System.out.println(flag);
                if(p2==1&&t2==1) flag++;//pt only one
                if((t1-p1)>=2) flag++;
                //print
                if(flag==4) printf("YES
    ");
                else printf("NO
    ");
            }
      return 0;
    }

    疑问:

    以上c代码完全通过。

    而我刚开始是用java写的。

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            int i=0,n,j;
            int YN=1;  
            int p1=0,t1=0;
            int p2=0,t2=0;
            Scanner input =new Scanner(System.in);
            n=input.nextInt();
            input.nextLine();
            for(j=0;j<n;j++) { 
                String arr=input.nextLine();
                p2=0;t2=0;
                YN=0;
                int flag1=0,flag=0;
                char[] aa=arr.toCharArray();
                for(i=0;i<aa.length;i++){
                    if(aa[i]=='P'){
                        p1=i;
                        p2++;
                    }
                    if(aa[i]=='T'){
                        t1=i;
                        t2++;
                    }
                    if(aa[i]=='A'||aa[i]=='P'||aa[i]=='T') flag1++;
                }
                if(flag1==aa.length) flag++;
                if(p1*(t1-p1-1)==(aa.length-1-t1)) flag++;
                if(p2==1&&t2==1) flag++;
                if((t1-p1)>=2) flag++;
                if(flag==4) System.out.println("YES");
                else System.out.println("NO");
            }
        }
    }

    得到了0分。

    有没有大佬能告诉我为什么。

  • 相关阅读:
    Oracle 10gR2 Dataguard搭建(非duplicate方式)
    Linux scp 设置nohup后台运行
    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级
    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级
    eclipse debug模式下总是自动跳到ThreadPoolExecutor.java类
    eclipse maven build、maven clean、maven install和maven test的区别 精析
    燕麦工作室第一卷:火力地堡高清下载
    java 泛型 精析
    任志强商学课:用企业家的思维理解商业 下载
    NodeJs编写小爬虫
  • 原文地址:https://www.cnblogs.com/shuicaojing/p/7525947.html
Copyright © 2011-2022 走看看