📄 11111111.cpp
字号:
#include <string.h>
/*##/*~~~~~~~~~~ Noted by Tang Houjian(ÌÆºñ¼ó)[2002-6-21 10:30:39] ~~~~~~~~~~~*/
/*
/* ³Ë×ø¹«¹²Æû³µÊ±µÄ»»³µÎÊÌâ¡£ÀýÈç´ÓÕ¾Aµ½ZÒª×ø¼¸Â·³µ£¬»»¼¸´Î£¬ÔÚÄÄÀï»»³µ£¬ÕâЩÎÊÌâÈçºÎ½â¾ö¡£
/* ³µ´Î¡¡¡¡³µÕ¾
/* 1¡¡¡¡¡¡q,w,e,r,t,y
/* 2¡¡¡¡¡¡a,s,d,f,g,h
/* 3¡¡¡¡¡¡z,x,c,v,b,n
/* 4¡¡¡¡ p,o,i,u,y,t
/* 5¡¡¡¡ l,k,j,h,g,f
/* 6¡¡¡¡ m,n,b,v,c,x
/* 7¡¡¡¡ q,a,z,w,s,x
/*
/*________________ Ended Note [2002-6-21 10:30:39] _____________________##*/
#define M 7 // ³µ´ÎÊý
// ³µ´ÎÍ£¿¿Õ¾Áбí
char *Station[M] = {
"QWERTY", // µÚ0´Î³µ
"ASDFGH", // µÚ1´Î³µ
"ZXCVBN", // µÚ2´Î³µ
"POIUYT", // µÚ3´Î³µ
"LKJHGF", // µÚ4´Î³µ
"MABVCX", // µÚ5´Î³µ
"QAZWSX"};// µÚ6´Î³µ
// ÒѾ­³Ë׏ýµÄ³µ´ÎÁÐ±í£¬¶ÔÓ¦take[i]=0±íʾ»¹Î´³Ë×Å£¬£½1±íʾÒѾ­³Ë׏ý
int taked[M]={0,0,0,0,0,0,0};
// »»³µµÄϳµµã
struct Exchange
{
static int Len; // ³¤¶È
int route; // ³µ´Î
char pos; // »»³µÕ¾µã
} Path[M]; // »»³µÂ·¾¶
int Exchange::Len = 0; // ³õʼ»¯Â·¾¶³¤¶È
bool PassBy(char P, char* path) // ¿´Â·¾¶pathµÄ³µÊÇ·ñ¾­¹ýµãP
{
while(*path!='\0') if( P==*(path++) ) return true;
return false;
}
// ´òӡ·¾¶£¬Ã»µÃ˵
void print_path()
{
static int cnt = 0;
printf("%04d",++cnt);
for(int i=0;i<Path[0].Len-1;i++)
printf(" (%2d: %c) --> ",Path[i].route+1,Path[i].pos);
printf(" (%2d: %c) ",Path[i].route+1,Path[i].pos);
printf("\n");
}
void NextSearchPath(char end,int route) // µÝ¹éѰÕÒ·¾¶
{
if( taked[route]!=0 ) return; // have been taked;
if( PassBy(end,Station[route]) )
{
Path[Path[0].Len].pos = end;
Path[Path[0].Len].route = route;
Path[0].Len++;
print_path();
Path[0].Len--;
return;
}
taked[route] = 1; //have been taked;
Path[Path[0].Len].route = route;
for(int i=0;i<strlen(Station[route]);i++)
{
char nowPos = Station[route][i];
if( nowPos==Path[Path[0].Len-1].pos ) continue;
for( int j=0; j<M; j++) if( PassBy(nowPos,Station[j]) )
{
Path[Path[0].Len].pos = nowPos;
Path[0].Len++;
NextSearchPath(end,j);
Path[0].Len--;
}
}
taked[route] = 0; //have been taked;
}
void SearchPath(char start, char end)
{
for(int i=0;i<M;i++) if( PassBy(start,Station[i]) )
{
Path[Path[0].Len].pos = start;
Path[Path[0].Len].route = i;
Path[0].Len++;
NextSearchPath(end,i);
Path[0].Len--;
}
}
void main()
{
SearchPath('A','Z');
}
//£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­£­
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -