1 条题解

  • 0
    @ 2024-12-24 9:54:34

    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;
    }
    

    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
    1277
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者