1 条题解
-
0
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
- 上传者