1 条题解

  • 1
    @ 2025-10-6 19:48:14
    #include<stdio.h>
    #include<string.h>
    int main(){
    	char arr[1000],brr[1000],crr[1000];
    	scanf("%s %s %s",arr,brr,crr);
    	int l=strlen(arr);
    	int m=0;
    	for(int i=0;i<l;i++)
    	{
    		for(int j=0;j<l;j++)
    		{
    			if(arr[i]==arr[j]&&brr[i]!=brr[j])
    			{
    				m=1;
    			}
    		}
    	}
    //判断是否有同一个字符可以转换为不同字符导致产生矛盾,比如A既可以代表B又可以代表C。如果矛盾m=1;
    	int h[26]={0};
    	int l2=strlen(crr);
    	char orr[26]={'A','B','C','D','E','F','G','H','I','J','K','L','N','M','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
    	
        for(int i=0;i<26;i++)
    {
    	for(int j=0;j<l;j++)
    	{
    		if(orr[i]==brr[j])
    		{
    			h[i]=1;
    			break;
    		}
    	}
    }
    //判断我们给的字符是否可以包含26给字母。
    int s=0;
    for(int i=0;i<26;i++)
    {
    	if(h[i]==0)
    	{
    		s=1;
    	}
    }
    //如果发现不包含那s=1;
    //当满足2个条件进行转换
    	if(m==0&&s==0)
    	{
    		for(int i=0;i<l2;i++)
    		{
    			for(int j=0;j<l;j++)
    			{
    				if(crr[i]==arr[j])
    				{
    					printf("%c",brr[j]);
    					break;
    				}
    			}
    		}
    	}
    	else {
    		printf("Failed");
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    279
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    (无)
    递交数
    285
    已通过
    26
    上传者