求助,新手看不懂这段代码

Krystal_ 2013-05-03 10:37:20
#include <stdio.h> 
int a[9];
int choose[7]={2,3,4,5,6,7,8}; // 剩下的7个数字中逐个排列
void show();
int check(int m);
void help(int m);


int main()
{

a[0]=9;//规定第一个数字是9
a[8]=1; //规定第一个数字是1
help(1);//调用help函数一次
return 0;
}

void show() //输出证据
{
int m,n,i=0;
puts("");
for(m=0;m<3;m++)//共有三行
{
for(n=0;n<3;n++) //共有三列
printf("%d ",a[i++]);
puts("");
}
}


int check(int m) //引用check函数,检查位置大小是否符合题意
{
int up=m;
int left=m;
int row=left/3; //行是左边的除以3
int col=left%3;//列是对3去余
int n;
for(n=1;n<=8;n++)
if(m==n) ;//空
else
{
if(a[m]==a[n])
return 0;
}
while(up-3>=0)// 当下面的数字-3要大于等于0
if(a[up-3]>a[up])
up-=3;
else
return 0;
while(col-1>=0) //当行中的数字-1要大于等于0
if(a[row*3+col-1]>a[row*3+col])//判断列中的数字乘以3加上行中的数字-1是否大于该行概列
col--;
else
return 0;
return 1;
}

void help(int m)
{
int i=0;
if(m>=8)
show();
else
{
for(i=0;i<7;i++)
{
a[m]=choose[i];
if(check(m))
help(m+1);
a[m] = 0;
}
}
}



int a[9];
int choose[7]={2,3,4,5,6,7,8}; // 剩下的7个数字中逐个排列
void show();
int check(int m);
void help(int m);
这段什么意思?声明?声明不是在主函数里的吗?
还有check函数看不太懂
...全文
158 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
就是那个党伟 2013-05-04
  • 打赏
  • 举报
回复
引用 3 楼 u010412025 的回复:
[quote=引用 1 楼 dw903632958 的回复:] 楼主可以发下 这段代码 的作用么? 即实现的是什么功能。
是这样的,有一个3行3列的矩形框,可以看做是3*3矩阵,要在其中填入九个数字1、2、3、4、5、6、7、8、9,要求左边的大于右边的,上边的大于下边的,请编写程序输出所有可能的这样的矩阵。例如,你的程序的输出中应该有下面的矩阵:    9 8 3    7 6 2    5 4 1[/quote] 看了一晚上了,没理通 明天接着看吧
Krystal_ 2013-05-03
  • 打赏
  • 举报
回复
引用 1 楼 dw903632958 的回复:
楼主可以发下 这段代码 的作用么? 即实现的是什么功能。
是这样的,有一个3行3列的矩形框,可以看做是3*3矩阵,要在其中填入九个数字1、2、3、4、5、6、7、8、9,要求左边的大于右边的,上边的大于下边的,请编写程序输出所有可能的这样的矩阵。例如,你的程序的输出中应该有下面的矩阵:    9 8 3    7 6 2    5 4 1
小小志 2013-05-03
  • 打赏
  • 举报
回复
首先定义了一个全局的数组,int a[ ],两个数组,一个初始化,一个没有初始化。其次,确实是对调用函数的一个声明,只是对所有函数都可以使用这些函数
就是那个党伟 2013-05-03
  • 打赏
  • 举报
回复
楼主可以发下 这段代码 的作用么? 即实现的是什么功能。

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧