回复 4楼 孤独一生
我自己的思路已经写好了,编译结果总是不对啊。。。只能求思路了。。。虽然我想用的也是递归
回复 5楼 rjsp
我想的差不多也是这样,循环,然后判断遇到的是不是*,如果是,判断其上下左右,然后延伸,遍历过的改符号,例如‘1’。应该是算法不对了。。。。。新手,表示想不出来。。。。(⊙﹏⊙)b #include<stdio.h>
int FindKing(int N, char *tride)
{
int i;
int king = 0;//国王
char *p = tride;
for(i = 0; i < N*N-1; i++)
{
if(p[i] = '*')
{
int m = i + 1;
int n = i + N;
if(p[m] == '*' && p[n] != '*')
{
p[m] = '1';
p++;
if(p[m] != '*'&& p[n] != '*')
{
king++;// 国王个数
break;
}
}
else if(p[m] != '*' && p[n] == '*')
{
p[n] = '1';
n += N;
if(p[m] != '*'&& p[n] != '*')
{
king++;// 国王个数
break;
}
}
else if(p[m] == '*' && p[n] == '*')
{
p[m] = '1';
m++;
if(p[m] != '*'&& p[n] != '*')
{
king++;// 国王个数
break;
}
}
else if(p[m] != '*'&& p[n] != '*')
{
king++;// 国王个数
break;
}
}
}
}
int main()
{
int i = 0;
int N;
char tride[300];
scanf("%d",&N);
getchar();
gets(tride);
FindKing(N,tride);
return 0;
}
我这么写的。。。。漏洞太多。。。