解题思路:
注意事项:
参考代码:
#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二级辅导-进制转换 (C语言代码)浏览:514 |
C语言训练-列出最简真分数序列* (C语言代码)浏览:506 |
C语言训练-计算t=1+1/2+1/3+...+1/n (C语言代码)浏览:869 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:422 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1039 |
数组输出 (C语言代码)错误???浏览:566 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:338 |
C语言程序设计教程(第三版)课后习题6.8 (C++代码)浏览:592 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:1072 |
1071题解浏览:493 |