📄 25_gong.cpp
字号:
//===========5 宫------------
// 每行,每列,和对角线 数字和为25.
//=====================================
#include "stdio.h"
#include "conio.h"
#include "process.h"
#include "dos.h"
#include "stdlib.h"
int num[25];
int getnum(int n){
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(num[i]==num[j]) return 0;
return 1;
}
const oushu[]={2,6,8,12,14,18,20,24};
const jishu[]={2,5,9,11,15,17,21,23};
void main(int argc,char *argv[])
{
int gong,gonnum=0;
int i,i1,i2,i3,i4,i5,i6,i7,i8;
int Maxhe;
char ch;
int exitnum;
FILE *fp;
fp=fopen("1.asm","wt");
clrscr();
if(argc==2){
gong=5;
Maxhe=65;
num[12]=13;
}
else {
// gong=3;
// Maxhe=15;
// num[4]=5;
gong=5;
Maxhe=65;
num[0]=16;
num[2]=1;
num[4]=22;
num[10]=19;
num[12]=13;
num[14]=7;
num[20]=4;
num[22]=25;
num[24]=10;
}
printf("... START ...\n");
while (1)
{
for(i1=0;i1<8;i1++){
num[1]=oushu[i1];
num[3]=26-num[1];
for(i2=0;i2<8;i2++){
num[5]=oushu[i2];
num[15]=26-num[5];
for(i5=0;i5<8;i5++){
num[21]=oushu[i5];
num[23]=26-num[21];
for(i4=0;i4<8;i4++){
num[9]=oushu[i4];
num[19]=26-num[9];
for(i3=0;i3<8;i3++){
num[7]=jishu[i3];
num[17]=26-num[7];
for(i6=0;i6<8;i6++){
num[6]=jishu[i6];
num[18]=26-num[6];
for(i7=0;i7<8;i7++){
num[11]=jishu[i7];
num[13]=26-num[11];
for(i8=0;i8<8;i8++){
num[8]=jishu[i8];
num[16]=26-num[8];
if(getnum(25)&&
(num[5]+num[6]+num[7]+num[8]+num[9]==65)&&
(num[15]+num[16]+num[17]+num[18]+num[19]==65)&&
(num[1]+num[6]+num[11]+num[16]+num[21]==65)&&
(num[3]+num[8]+num[13]+num[18]+num[23]==65))
{
gonnum++;
printf("%3d\n",gonnum);
fprintf(fp,"%3d\n",gonnum);
for(i=0;i<25;i++){
printf("%4d",num[i]);
fprintf(fp,"%4d",num[i]);
if(i%5==4){
printf("\n");
fprintf(fp,"\n");
}
}
printf("\n");
fprintf(fp,"\n");
// ch=getch();
// if(ch=='q') exit(1);
}
}}}}}}}
exitnum++;
if(exitnum==8) exit(0);
}
}
fclose(fp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -