猴子选大王问题
本人的解法是对于m只猴子用构造m*m的数组来保证循环,但我不知道在那里有一个错误本人一直检查不出来麻烦大家有兴趣的话来帮我找找看#include<stdio.h>
#define M 4
#define N 3
void main()
{
int i,j;
int a[M][M];
for(i=0;i<M;i++)
for(j=0;j<M;j++)
a[i][j]=j+1;/*数组初始化*/
void find(int m,int n,int b[m][m]);
find(M,N,a);
system("pause");
}
void find(int m,int n,int b[m][m])
{
int *p,i,j,z;
p=*b;
for(p=*b,z=0;p<*b+m*m;p++)
{
if(*p==0)z=z+0;
else z=z+1;
if(z==n)
{z=0;
void ternzero(int *p,int a[m][m]);/*找出被淘汰的猴子*/
ternzero(p,b);
}
}
for(j=0,i=0;j<m;j++)
if(b[i][j]!=0)printf("第%d猴子是大王",j+1);
}
void ternzero(int *p,int a[m][m])/*把被淘汰的序号归0*/
{
int i,j,c;
for(i=0;i<m;i++)
for(j=0;j<m;j++)
if((*(a+i)+j)==p)
for(c=0;c<m;c++)
a[c][j]=0;
}
[[it] 本帖最后由 faminxmu 于 2008-4-26 10:02 编辑 [/it]]