同样是acm滑雪的那道题。。求解!!!
/*题目还是acm滑雪的题(从高到低,最长的数据链例如22-19-11-10-8),不过是四阶的。我的水平太低了,望高手能够补充完善,一点点提醒也行, 谢谢。*/
#include<stdio.h>
static int a[100][17]={0},count=0;
#define N 4
int main()
{
void fun(int i,int j,int k);
int i,j,k,b[N][N]={8,10,11,12,9,21,19,11,8,20,22,10,7,9,5,4};
for(i=0;i<N;i++)
for(j=0,k=0;j<N;j++,k=0)
{
a[count][k++]=b[i][j];
fun(b,i,j,k);
}
for(i=0;i<count;i++)
{
for(j=0;j<17;j++)
{
printf("%-3d ",a[i][j]);
}
printf("\n");
}
}
void fun(int (*b)[N],int i,int j,int k) //递归判断。
{
if(j<N-1&&b[i][j]>b[i][j+1])
{
a[count][k]=b[i][j+1];
fun(b,i,j+1,k+1);
}
if(i<N-1&&b[i][j]>b[i+1][j])
{
a[count][k]=b[i+1][j];
fun(b,i+1,j,k+1);
}
if(j>0&&b[i][j]>b[i][j-1])
{
a[count][k]=b[i][j-1];
fun(b,i,j-1,k+1);
}
if(i>0&&b[i][j]>b[i-1][j])
{
a[count][k]=b[i-1][j];
fun(b,i-1,j,k+1);
}
count++;
}