解题思路:
注意事项:
参考代码:
#include<stdio.h>
int k(int cs,int a[8][8],int n,int bex,int bey)
{
int i,j,ik,jk,zl=0,h,f;
int b[8][8];
for(h=0;h<n;h++)
for(f=0;f<n;f++)
b[h][f]=a[h][f];
for(i=bex;i<n;i++)
{
if(i==bex){ j=bey; }
else{j=0;}
for(;j<n;j++)
{
if(b[i][j]==1)
{
if(cs==1) { zl++;}
else{
b[i][j]=2;
ik=i-1;
while(ik>=0 && b[ik][j]!=0)
{ b[ik][j]=2; ik--; }
ik=i+1;
while(ik<n && b[ik][j]!=0)
{ b[ik][j]=2; ik++;}
jk=j-1;
while(jk>=0 && b[i][jk]!=0)
{b[i][jk]=2;jk--;}
jk=j+1;
while(jk<n && b[i][jk]!=0)
{b[i][jk]=2;jk++;}
zl+=k(cs-1,b,n,i,j+1);
for(h=0;h<n;h++)
for(f=0;f<n;f++)
b[h][f]=a[h][f];
}
}
}
}
return zl;
}
void main()
{
int a[8][8];
int n,i,j,zl=1,cs=1;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
while(zl){
zl=0;
if(cs==1)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
zl+=a[i][j];
}
else{
zl+=k(cs,a,n,0,0);
}
if(zl!=0)
printf("%d\n",zl);
cs=cs+1;
}
}
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:658 |
printf基础练习2 (C语言代码)浏览:942 |
蛇行矩阵 (C语言代码)浏览:744 |
printf基础练习2 (有点不明白)浏览:838 |
简单的a+b (C语言代码)浏览:626 |
哥德巴赫曾猜测 (C语言代码)浏览:2318 |
K-进制数 (C语言描述,蓝桥杯)浏览:925 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1457 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:635 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:512 |