matlab转c的案例,[MATLAB基础] 将C转化成MATLAB

icon7.gif 将C转化成MATLAB

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

#include

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("",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

{

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值