求助,在其他地方相同题目过了,洛谷没过,目前自测是输入问题,不知道怎么改
查看原帖
求助,在其他地方相同题目过了,洛谷没过,目前自测是输入问题,不知道怎么改
1179357
panmianbao楼主2024/10/19 21:30
#include<stdio.h>
#include<string.h>
char n[20];
int k,l,sum=1;
int x[20],y[20];
int is[10000]={0};
int tonum(){
	int num=0;
	for(int i=0;i<l;i++){
		num=(n[i]-'0')+num*10;
	}
	return num;
}
void dfs(){//检测到的位置
    for(int i=0 ; i<l ; i++){
        for(int j=0;j<k;j++){//检查映射关系
            if(n[i]-'0' == x[j]){//存在映射
                
                n[i]=y[j]+'0';
                if(!is[tonum()]){//没记录过
                    is[tonum()]=1;
                    sum++;   
                    dfs();
                }
                n[i]=x[j]+'0';//复原
	            
            }
        }
        
    }
}

int main(){
    scanf("%s %d\n",n,&k);
    l=strlen(n);
	is[tonum(n)]=1;
    for(int i=0;i<k;i++){
        scanf("%d %d",x+i,y+i);
    }
    dfs();
    printf("%d",sum);
return 0;
}

测试点2开始没过 输入:123456789 8 1 9 9 1 2 8 8 2 3 7 7 3 4 6 6 4 输出:256

2024/10/19 21:30
加载中...