📄 my.cpp
字号:
#include <iostream>
FILE *wt; //生成的文件的指针
char ch1[10]; //char*缓冲
char ch2[]={"A total of kinds of results"};
int max[8][8]; //记录棋子的位置
int hang[8]; //棋盘8行
int lie[8]; //棋盘8列
int left[15]; //左斜线15排
int right[15]; //右斜线15排
int emp[8]; //8颗棋子
int top; //记录放置棋子的数量
int count; //记录棋子排放的方法总数
/////////////////////////////////////////////////////
//初始化变量
void init()
{
top=-1;
count=0;
for(int i=0;i<8;i++)
{
emp[i]=hang[i]=lie[8]=0;
}
for(i=0;i<15;i++)
{
left[i]=right[i]=0;
}
}
/////////////////////////////////////////////////////
//放置一颗棋子
void putin(int row,int column)
{
top=top+1;
emp[top]=max[row][column]=hang[row]=lie[column]=left[row+column]=right[7-column+row]=1;
}
/////////////////////////////////////////////////////
//取出一颗棋子
void putout(int row,int column)
{
emp[top]=max[row][column]=hang[row]=lie[column]=left[row+column]=right[7-column+row]=0;
top=top-1;
}
/////////////////////////////////////////////////////
//看棋子所放的位置是否符合规则
bool isAvailable(int row,int column)
{
if(hang[row]==1||lie[column]==1||left[row+column]==1||right[7+row-column]==1)
return false;
return true;
}
/////////////////////////////////////////////////////
//输出结果
void show()
{
_itoa(count+1,ch1,10);
for(int i=0;i<2;i++)
{
fputc(ch1[i],wt);
}
fputc('\n',wt);
for(i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
_itoa(max[i][j],ch1,10);
fputc(ch1[0],wt);
fputc(' ',wt);
}fputc('\n',wt);
}
fputc('\n',wt);
fputc('\n',wt);
}
/////////////////////////////////////////////////////
//放置棋子
void recurse(int row,int column)
{
int nextrow=row+1;
for(int i=0;i<8;i++)
{
if(isAvailable(nextrow,i))
{
putin(nextrow,i);
if(top==7)
{
show();
count=count+1;
}
recurse(nextrow,i);
putout(nextrow,i);
}
}
}
int main()
{
init();
wt=_wfopen(L"结果.txt",L"w+,ccs=UNICODE");
if (wt==NULL)
printf("打开文件错误!\n");
for(int i=0;i<8;i++)
{
if(isAvailable(0,i))
{
putin(0,i);
recurse(0,i);
putout(0,i);
}
}
_itoa(count,ch1,10);
for(i=0;i<11;i++)
{
fputc(ch2[i],wt);
}
for(i=0;i<2;i++)
{
fputc(ch1[i],wt);
}
for(i=11;i<30;i++)
{
fputc(ch2[i],wt);
}
if (fclose(wt))
printf("保存文件出错!\n");
else
printf("分析已成功完成!\n");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -