Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2010-08-25, 11:30   #1
maledong
初级会员
 
注册日期: 2010-08-25
帖子: 1
声望力: 0
maledong 正向着好的方向发展
微笑 将C转化成MATLAB

大家好,我收到一个QQ搜搜的援助,但是我不知道如何把C转化成MATLAB,有谁可以帮忙的请直接到http://wenwen.soso.com/z/q216168970....��码如下:

#include<stdio.h>
int map[9][9]={0,0,3,8,1,0,0,0,9,
5,0,0,4,0,0,0,8,0,
0,6,0,9,0,0,1,0,0,
0,0,8,0,3,0,0,0,6,
0,0,0,0,0,0,0,0,0,
9,0,0,6,0,0,5,0,0,
0,0,6,0,0,9,0,1,0,
0,1,0,0,0,5,0,0,4,
2,0,0,0,4,8,7,0,0};


void display()
{
int i;
int j;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(map[i][j])
{
printf("<%d>",map[i][j]);
}
else
{
printf("< >");
}
}
printf("\n");
}
}


int check(int x,int y,int *mark)//check函数为该格子可以选择的数字
{
int i;
int j;
int gi;
int gj;
int count = 0;
for(i=1;i<=9;i++)
{
mark[i]=0;//初始化
}

for(i=0;i<9;i++)
{
mark[map[x][i]]=1; //表示该行该数字已存在
mark[map[i][y]]=1; //表示该列该数字已存在
}
gi=x/3*3;//九宫格把map分割成9个小块,如果该格子所在行列为(1,4),那么它所在子格子起始为(0,3)到(2,5)的九个小格子
gj=y/3*3;

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
mark[map[gi+i][gj+j]]=1;//此循环为表示所在子格子的九个小格子中已存在该数字
}
}

for (i=1;i<=9;i++)
{
if(0==mark[i]) //如果该数字不存在则++
{
count++;
}
}
return count;
}


void crack()//?
{
int i;
int j;
int mark[10]; //标志数字是否已存在
int min=10; //记录最少可能数字数
int ci=-1; //ci,cj用来记录最少可能数字的格子所在行列
int cj;
for (i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(map[i][j])
{
continue; //如果该格子已有数字则跳到下一个格子
}
int c=check(i,j,mark); //c为该格子可以选择的数字
if(0==c)
{
return;
}
if(c<min)
{
ci=i;
cj=j;
min=c;
}
}
}

if(-1==ci)
{
printf("The answer is:\n");
display();
return;
}
check(ci,cj,mark);//这个语句的作用是把mark这个数组设置成最小可能格子缺少的数字,若缺少则为0

for(i=1;i<=9;i++)
{
if(mark[i]==0)
{
map[ci][cj]=i; //先填入该数字
crack(); //进行判断
}
map[ci][cj]=0; //若这个数字不可以得到解则判断下一可能数字(这里类似0-1背包问题)
}
}


int main()
{
printf("The game is:\n");
display();
crack();
return 0;
}
maledong 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 19:35


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.