| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:请教用什么编译器?In Reply To:请教用什么编译器? Posted by:dlxxxt at 2015-01-11 10:52:31 #include <stdio.h>
typedef struct SnowFiled
{
int hight;
int x;
int y;
}SnowFiled;
void QuickSort(SnowFiled [],int);
void Search(int,int,int*,int,int,int);
int steptotal = 0;
main()
{
int xnum,ynum,num = 0,step;
struct SnowFiled snow[10000];
int matrix[100][100];
int *p;
p = &matrix[0][0];
int i,j;
scanf("%d%d",&xnum,&ynum);
for(i=0;i<xnum;i++)
for(j=0;j<ynum;j++)
{
scanf("%d",&matrix[i][j]);
snow[num].x = i;
snow[num].y = j;
snow[num].hight = matrix[i][j];
num++;
}
QuickSort(snow,num);
for(i=0;snow[i].hight-snow[num-1].hight>steptotal-1;i++)
{
Search(snow[i].x,snow[i].y,p,xnum,ynum,1);
}
printf("%d",steptotal);
}
void QuickSort(SnowFiled snow[],int num)
{
int i = 0,j = num - 1;
SnowFiled val = snow[0];
if(num>1)
{
while(i<j)
{
for(;j>i;j--)
{
if(snow[j].hight>val.hight)
{
snow[i] = snow[j];
i++;
break;
}
}
for(;i<j;i++)
{
if(snow[i].hight<val.hight)
{
snow[j] = snow[i];
j--;
break;
}
}
}
snow[i] = val;
QuickSort(snow,i);
QuickSort(snow+i+1,num-i-1);
}
}
void Search(int x,int y,int *p,int xnum,int ynum,int step)
{
int dir[4][2] = {0,-1,0,1,1,0,-1,0};
int i;
if(steptotal<step)
{
steptotal = step;
}
for(i=0;i<4;i++)
{
if((x+dir[i][0])>=0&&(x+dir[i][0])<xnum&&(y+dir[i][1])>=0&&(y+dir[i][1])<ynum&&*(p+100*x+y)>*(p+100*(x+dir[i][0])+y+dir[i][1]))
{
Search(x+dir[i][0],y+dir[i][1],p,xnum,ynum,step+1);
}
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator