最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
求从棋盘的坐下角到右上角的无环路的总数
时间:2022-07-02 11:01:26 编辑:袖梨 来源:一聚教程网
#include"stdio.h"
#define N 8 //因为算出来的数据太大,所以要算很久,可以改变N的值进行测试。
#include"iostream.h" //此算法采用回溯法
enum bin{fal,tr}; //如果有更好的算法,请发e-mail给我。在此谢过。
int top=0;
long int num=0;
int row[]={-1,-2,-2,-1,1,2,2,1};
int col[]={-2,-1,1,2,2,1,-1,-2};
bin mark[N][N];
struct stack
{
int x,y;
int dir;}board[N*N];
void push(stack it)
{
board[top].x=it.x;
board[top].y=it.y;
board[top].dir=it.dir;
mark[board[top].x][board[top].y]=tr;
top++;
}
stack pop()
{
--top;
mark[board[top].x][board[top].y]=fal;
board[top].dir++;
return board[top];
}
bin empty()
{
if(top==0) return tr;
else return fal;
}
void main()
{
stack temp={N-1,N-1,-1};
push(temp);
while(!empty())
{
int g,h;
temp=pop();
int i=temp.x;
int j=temp.y;
int dir=temp.dir;
while(dir<8)
{
g=i+row[dir];
h=j+col[dir];
if((g<0)||(h<0)||(g>=N)||(h>=N)||mark[g][h]) dir++;
else {
if(g==0&&h==0) {num++;dir++;}
else {
temp.x=i;
temp.y=j;
temp.dir=dir;
push(temp);
&n
相关文章
- 《原神》5.2卡池抽取建议 11-14
- 《原神》5.2版本新怪物介绍 11-14
- 《原神》希诺宁增伤触发方法 11-14
- 《原神》循音觅奇活动入口 11-14
- 《原神》循音觅奇兑换码获取方法 11-14
- 《原神》花羽会活动飞行技巧介绍 11-14