C语言。8皇后程序,算出来只有88种...还差4种..帮忙下先谢谢了!

Python014

C语言。8皇后程序,算出来只有88种...还差4种..帮忙下先谢谢了!,第1张

你的代码我就不看了,给你两个八皇后的代码,一个堆栈回溯法,一个函数递归法,本质上其实是一种方法,好好体会吧(=^ ^=)

函数递归法:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

void f(int *qp,int x,int y)

int test(int *qp,int x,int y)

int main(void)

{

int a[8],x=0,y=0

f(a,x,y)

getch()

return EXIT_SUCCESS

}

void f(int *a,int x,int y)

{

static int i=0

int k=0

if(test(a,x,y))

{

a[y]=x

if(y==7)

{

printf("[%d] ",++i)

while(k<=7)

{

printf("%d ",a[k]+1)

k++

}

printf("\n")

return

}

else

{

f(a,0,y+1)

if(x+1<8)

f(a,x+1,y)

else

return

}

}

else

{

if(x+1<8)

f(a,x+1,y)

else

return

}

}

int test(int *a,int x,int y)

{

int i

for(i=y-1i>=0i--)

{

if(a[i]==x)

return 0

else

{

if(a[i]+(y-i)==x||a[i]-(y-i)==x)

return 0

else

continue

}

}

return 1

}

堆栈回溯法:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

int check(int a[],int x,int y)

int main(void)

{

int a[8],top=-1,x=0,y=0,single,i=0,j

while(y<=7&&y>=0)

{

if(x==8)

{

y=top

x=a[top]+1

top--

continue

}

single=check(a,x,y)

if(single)

{

a[y]=x

top=y

if(y!=7)

{

y++

x=0

}

else

x++

}

else

x++

if(top==7)

{

printf("[%d] %d %d %d %d %d %d %d %d\n",

++i,a[0]+1,a[1]+1,a[2]+1,a[3]+1,a[4]+1,a[5]+1,a[6]+1,a[7]+1)

top--

}

}

getch()

return EXIT_SUCCESS

}

int check(int a[],int x,int y)

{

int i,single=1

for(i=y-1i>=0i--)

{

if(a[i]==x)

{

single=0

break

}

else

{

if( (a[i]+(y-i)==x) || (a[i]-(y-i)==x) )

{

single=0

break

}

else

continue

}

}

return single

}

C语句可分为以下五类:

1 表达式语句

2 函数调用语句

3 控制语句

4 复合语句

5 空语句。

1) 表达式语句

表达式语句由表达式加上分号“”组成。其一般形式为:

表达式

执行表达式语句就是计算表达式的值。例如 c=a+a

2) 函数调用语句

由函数名、实际参数加上分号“”组成。其一般形式为:

函数名(实际参数表)

例如  printf("Hello !")

3) 控制语句

控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有九种控制语句。 可分成以下三类:

条件判断语句:if语句、switch语句;

循环执行语句:do while语句、while语句、for语句;

转向语句:break语句、goto语句、continue语句、return语句。

4) 复合语句

把多个语句用括号{}括起来组成的一个语句称复合语句。

在程序中应把复合语句看成是单条语句,而不是多条语句。例如:

{  x=y+z a=b+cprintf("%d%d", x, a)}

5) 空语句

只有分号“”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。例如:while( getchar()!='\n' )

C语言只有一种,独一无二。C语言最新的标准是C11。

C11标准是 ISO/IEC 9899:2011 - Information technology -- Programming languages -- C 的简称 ,曾用名为C1X。C11标准是C语言标准的第三版,前一个标准版本是C99标准。2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC) 旗下的C语言标准委员会(ISO/IEC JTC1/SC22/WG14)正式发布了C11标准 。C11标准的最终定稿的草案是免费开放的,为N1570[3] ,但是正式标准文件需要198瑞士法郎 。

C++,Java,C#等语言,只是在部分语法上与C有相似之处。因为它们基本上都是从C那里继承了一些东西。但它们的不同之处更多。C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。