📄 unit1.~cpp
字号:
Form1->Shape54->Brush->Color=clYellow;
Form1->Shape54->Repaint();
Form1->Shape55->Brush->Color=clYellow;
Form1->Shape55->Repaint();
Form1->Shape56->Brush->Color=clYellow;
Form1->Shape56->Repaint();
Form1->Shape57->Brush->Color=clYellow;
Form1->Shape57->Repaint();
Form1->Shape63->Brush->Color=clYellow;
Form1->Shape63->Repaint();
Form1->Shape64->Brush->Color=clYellow;
Form1->Shape64->Repaint();
Form1->Shape65->Brush->Color=clYellow;
Form1->Shape65->Repaint();
Form1->Shape73->Brush->Color=clYellow;
Form1->Shape73->Repaint();
Form1->Shape74->Brush->Color=clYellow;
Form1->Shape74->Repaint();
Form1->Shape75->Brush->Color=clYellow;
Form1->Shape75->Repaint();
}
void tiaoqi(int n)
{
FILE *file1;
int m,buf,n1,l1,n2,l2,midx,midy,b1,b2,b3;
string s1;
s1="";
char tempbuf[512];
file1=fopen("d:/1.txt","a+");
int find=0;
k=1; //指示路径存放下标及 k可记录吃掉的棋子
i=0;
j=0;
while(k>0)
{
while (i<7)
{
while (j<7)
{ if (s[i][j]==1)
{if ((j>=3)&&(s[i][j-1]==1)&&(s[i][j-2]==0)) // 横向从右向左跳动
{ s[i][j]=0;
s[i][j-1]=0; s[i][j-2]=1;
way[k][1].x=i; way[k][1].y=j-2;
way[k][0].x=i; way[k][0].y=j;
k++;
i=0;
j=0;
}
else
if ((i<=5)&&(s[i+1][j]==1)&&(s[i+2][j]==0)) // 纵向从上向下跳动
{ s[i][j]=0;
s[i+1][j]=0; s[i+2][j]=1;
way[k][1].x=i+2; way[k][1].y=j;
way[k][0].x=i; way[k][0].y=j;
k++;
i=0;
j=0;
}
else
if ((j<=5)&&(s[i][j+1]==1)&&(s[i][j+2]==0)) // 横向从左向右跳动
{ s[i][j]=0;
s[i][j+1]=0; s[i][j+2]=1;
way[k][1].x=i; way[k][1].y=j+2;
way[k][0].x=i; way[k][0].y=j;
k++;
i=0;
j=0;
}
else
if ((i>=3)&&(s[i-1][j]==1)&&(s[i-2][j]==0)) // 纵向从下向上跳动
{ s[i][j]=0;
s[i-1][j]=0; s[i-2][j]=1;
way[k][1].x=i-2; way[k][1].y=j;
way[k][0].x=i; way[k][0].y=j;
k++;
i=0;
j=0;
}
else j++; //有棋子但不能跳动
} //有棋子结束
else j++; // 没有棋子
}
i++; j=0; //换行
}
if ((k==31)&&(s[3][3]==1))
{
count1++;
snprintf(tempbuf,sizeof(tempbuf)," \n\n this is the %d way : \n",count1);
s1 =tempbuf;
fwrite(s1.c_str(),s1.size(),1,file1);
for(m=0;m<31;m++)
{
n1=way[m][0].x; l1=way[m][0].y; //起点
n2=way[m][1].x; l2=way[m][1].y; //终点
snprintf(tempbuf,sizeof(tempbuf)," {[%d,%d] to [%d,%d]};",n1,l1,n2,l2); //输出到文本
s1 =tempbuf;
fwrite(s1.c_str(),s1.size(),1,file1);
n1++; l1++; //起点显示
b1=n1*10+l1;
changecolor(b1);
Sleep(1000);
n2++; l2++; //终点显示
b2=n2*10+l2;
changecolor(b2);
Sleep(1000);
midx=(n1+n2)/2; //中间点显示
midy=(l1+l2)/2;
b3=midx*10+midy;
changecolor(b3);
Sleep(1000);
//ShowMessage("adfgds");
}
Sleep(2000);
qipancolor();
Sleep(2000);
k--; find=1;
}
if (find==1) {k++; find=0;}
if (k>1)
{ k--;
s[way[k][1].x][way[k][1].y]=0; //还原棋子
s[way[k][0].x][way[k][0].y]=1;
s[(way[k][1].x+way[k][0].x)/2][(way[k][1].y+way[k][0].y)/2]=1;
i=way[k][0].x;
j=way[k][0].y;
if (j<6) j++; //指向下一位置
else if (i<6)
{ i++; j=0; }
way[k][1].x=-1; way[k][1].y=-1; //取消路径
way[k][0].x=-1; way[k][0].y=-1;
}
else k--;
} //do矩阵一轮遍历结束
fclose(file1);
}
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
count1=0; //用来记录找到的方案数
for (i=0;i<7;++i) //初始化矩阵
for (j=0;j<7;++j)
s[i][j]=1;
s[3][3]=0; s[0][6]=-1;
s[1][6]=-1; s[0][5]=-1;
s[1][5]=-1; s[6][6]=-1;
s[5][6]=-1; s[6][5]=-1;
s[5][5]=-1; s[0][0]=-1;
s[1][0]=-1; s[0][1]=-1;
s[1][1]=-1; s[6][0]=-1;
s[5][0]=-1; s[6][1]=-1;
s[5][1]=-1;
s[3][5]=0; //第三种移动 横向从右向左跳动
s[3][4]=0; s[3][3]=1;
for (i=0;i<31;++i) //第一个已放入,初始化路径
for (j=0;j<2;++j)
{
way[i][j].x=-1;
way[i][j].y=-1;
}
way[0][0].x=3; way[0][0].y=5;
way[0][1].x=3; way[0][1].y=3;
tiaoqi(31);
for (i=0;i<7;++i) //初始化矩阵
for (j=0;j<7;++j)
s[i][j]=1;
s[3][3]=0; s[0][6]=-1;
s[1][6]=-1; s[0][5]=-1;
s[1][5]=-1; s[6][6]=-1;
s[5][6]=-1; s[6][5]=-1;
s[5][5]=-1; s[0][0]=-1;
s[1][0]=-1; s[0][1]=-1;
s[1][1]=-1; s[6][0]=-1;
s[5][0]=-1; s[6][1]=-1;
s[5][1]=-1;
s[1][3]=0; //第一种移动 纵向从上向下跳动
s[2][3]=0; s[3][3]=1;
for (i=0;i<31;++i) //第一个已放入,初始化路径
for (j=0;j<2;++j)
{
way[i][j].x=-1;
way[i][j].y=-1;
}
way[0][0].x=1; way[0][0].y=3;
way[0][1].x=3; way[0][1].y=3;
tiaoqi(31); //调用跳棋函数;
for (i=0;i<7;++i) //初始化矩阵
for (j=0;j<7;++j)
s[i][j]=1;
s[3][3]=0; s[0][6]=-1;
s[1][6]=-1; s[0][5]=-1;
s[1][5]=-1; s[6][6]=-1;
s[5][6]=-1; s[6][5]=-1;
s[5][5]=-1; s[0][0]=-1;
s[1][0]=-1; s[0][1]=-1;
s[1][1]=-1; s[6][0]=-1;
s[5][0]=-1; s[6][1]=-1;
s[5][1]=-1;
s[3][1]=0; //第二种移动 横向从左向右跳动
s[3][2]=0; s[3][3]=1;
for (i=0;i<31;++i) //第一个已放入,初始化路径
for (j=0;j<2;++j)
{
way[i][j].x=-1;
way[i][j].y=-1;
}
way[0][0].x=3; way[0][0].y=1;
way[0][1].x=3; way[0][1].y=3;
tiaoqi(31);
for (i=0;i<7;++i) //初始化矩阵
for (j=0;j<7;++j)
s[i][j]=1;
s[3][3]=0; s[0][6]=-1;
s[1][6]=-1; s[0][5]=-1;
s[1][5]=-1; s[6][6]=-1;
s[5][6]=-1; s[6][5]=-1;
s[5][5]=-1; s[0][0]=-1;
s[1][0]=-1; s[0][1]=-1;
s[1][1]=-1; s[6][0]=-1;
s[5][0]=-1; s[6][1]=-1;
s[5][1]=-1;
s[5][3]=0; //第四种移动 纵向从下向上跳动
s[4][3]=0; s[3][3]=1;
for (i=0;i<31;++i) //第一个已放入,初始化路径
for (j=0;j<2;++j)
{
way[i][j].x=-1;
way[i][j].y=-1;
}
way[0][0].x=5; way[0][0].y=3;
way[0][1].x=3; way[0][1].y=3;
tiaoqi(31);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -