1243 Bob's Password

Bob最新购入一款安卓手机,他发现安卓手机密码使用的是画线方式。
一共有9个点,我们按行列顺序依次为1~9。密码要求在点和点之间连线不能有还未曾经过的点。
比如说:从1出发,可以到2,4,5,6,7,8,但是不能到达3,7,9。
但是如果从2出发,先到1,这时因为2已经经过了,所以此时可以到达3。
现在给你一个密码,请问它是否符合密码的这个要求?

输入
第一行是一个整数T(1≤T≤10000),表示样例的个数。
一个样例占一行,是一个最短为4位,最长9位,只含1-9的字符串,且1-9最多只有1个。

输出
每个样例输出一行,如果合法输出“Yes”,否则输出“No”。

样例输入
3
16852
213
132
样例输出
Yes
Yes
No

输入同样的数,调试和编译运行出来的结果不一样,是因为有些量没有初始化,导致编译运行和调试时给这些量自动赋的值不同,而使结果不一样。
int chose[11][11]={0};//这样子就可以全部初始化为0!!!

#include
#include
int main()
{
     
	int t,i,j,b[110],l;
	char a[110];
	int num[110];
	int chose[11][11]={
     0};//这样子就可以全部初始化为0!!!一开始没有初始化,就出错了, 
	//没初始化的都是乱码。 
    chose[1][3]=1;
    chose[1][7]=1;
    chose[1][9]=1;
    chose[2][8]=1;
    chose[3][1]=1;
    chose[3][9]=1;
    chose[3][7]=1;
    chose[4][6]=1;
    chose[6][4]=1;
    chose[7][1]=1;
    chose[7][3]=1;
    chose[7][9]=1;
    chose[8][2]=1;
    chose[9][1]=1;
    chose[9][3]=1;
    chose[9][7]=1;
    scanf("%d",&t);
	while(t--)
	{
     
		scanf("%s",a);	
		l=strlen(a);
		for(i=0;i<11;i++)  b[i]=0;
		for(i=0;i<l;i++)
		{
     
			num[i]=a[i]-'0'; 
		}
		for(i=0;i<l-1;i++)   
		{
     
			b[num[i]]=1;
			if(chose[num[i]][num[i+1]]==1&&b[(num[i]+num[i+1])/2]==0)
			{
     				
				printf("No\n"); 
				break;
			}  
		}
		if(i>=l-1)  printf("Yes\n");
	}
	return 0;
}

你可能感兴趣的:(#,128,模拟考试)