1 条题解

  • 0
    @ 2025-4-7 21:19:28

    C :

    #include <stdio.h>
    #include <string.h>
    int sort(char str[])
    {
      int set[11];
      for(int i=0;i<11;i++)
        set[i]=0;
      char qe[11];
      int first=0,rear=0;
      qe[rear++]=str[0];
      set[str[0]-'0']=1;
      while(first!=rear)
      {
        char ch=qe[first++];
        for(int i=0;i<strlen(str);i++)
        {
          if(ch>str[i]&&set[str[i]-'0']==0)
          {
            set[str[i]-'0']=1;
            qe[rear++]=str[i];
            break;
          }
        }
        for(int i=0;i<strlen(str);i++)
        {
          if(ch<str[i]&&set[str[i]-'0']==0)
          {
            set[str[i]-'0']=1;
            qe[rear++]=str[i];
            break;
          }
        }
      }
      for(int i=0;i<strlen(str);i++)
      {
        str[i]=qe[i];
      }
      return 0;
      
    }
    int main()
    {
      while(1)
      {
        int n;
        char std[11];
        char in[11];
        
        scanf("%d",&n);
        if(n==0)
        {
          break;
        }
        scanf("%s",std);
        sort(std);
        for(int i=0;i<n;i++)
        {
          scanf("%s",in);
          sort(in);
          if(strcmp(in,std)==0)
          {
            printf("YES\n");
          }
          else
          {
            printf("NO\n");
          }
        }
      }
      return 1;
    }
    

    C++ :

    #include<iostream>
    #include<string>
    using namespace std;
    
     
    
    //递归判断是否是同一棵二叉搜索树
    
    //时间复杂度O(nlogn)
    
    bool is_same(string a,string b)
    {
             if(a==b)
                return true;
             if(a[0]!=b[0])
                return false;
             string a1,a2,b1,b2;
             unsigned i;
             for(i=1;i<a.size();i++)
             {
                 if(a[i]>a[0])
                     a2+=a[i];
                 else
                     a1+=a[i];
                if(b[i]>b[0])
                     b2+=b[i];
                else
                      b1+=b[i];
            }
    
     if(is_same(a1,b1)&&is_same(a2,b2))
            return true;
     else
            return false;
    }
    
    int main()
    {
            int m;
           string a,b;
           while(1)
           {
                 cin>>m;
                if(m==0)
                   break;
               cin>>a;
               for(int j=0;j<m;j++)
              {
                    cin>>b;
                    if(is_same(a,b))
                         cout<<"YES"<<endl;
                    else
                         cout<<"NO"<<endl;
                }
      }
     return 0;
    }
    
    

    Java :

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
    	static int[] ftree = new int[11111];
    	static int[] stree = new int[11111];
    
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		while (in.hasNextInt()) {
    			int n = in.nextInt();
    			if (n == 0)
    				break;
    			String s = in.next();
    			Arrays.fill(ftree,-1);
    			for (int i = 0; i < s.length(); i++) {
    				int x = s.charAt(i)-'0';
    				int j = 1;
    				while(ftree[j]!=-1){
    					if(x<=ftree[j])
    						j = j*2;
    					else
    						j = j*2+1;
    				}
    				ftree[j] = x;
    			}
    			for (int i = 0; i < n; i++) {
    				String s1 = in.next();
    				Arrays.fill(stree, -1);
    				for (int k = 0; k < s1.length(); k++) {
    					int x = s1.charAt(k) - '0';
    					int j = 1;
    					while (stree[j] != -1) {
    						if (x <= stree[j])
    							j = j * 2;
    						else
    							j = j * 2 + 1;
    					}
    					stree[j] = x;
    				}
    				boolean flag = true;
    				for (int k = 0; k < ftree.length; k++) {
    					if (ftree[k] != stree[k]) {
    						flag = false;
    						break;
    					}
    				}
    				if (flag)
    					System.out.println("YES");
    				else
    					System.out.println("NO");
    			}
    		}
    	}
    }
    
    
    • 1

    信息

    ID
    1115
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者