解题思路:
注意事项:
参考代码:
#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语言代码)浏览:912 |
C语言训练-阿姆斯特朗数 (C语言代码)浏览:897 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:700 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:562 |
1025题解浏览:796 |
蓝桥杯历届试题-翻硬币 (C++代码)浏览:953 |
C语言程序设计教程(第三版)课后习题12.5 (C语言代码)浏览:799 |
多输入输出练习2 (C语言代码)浏览:1709 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:487 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:630 |