Description
coldsheep 最近吃东西越来越多,所以决定减肥.为了实施减肥计划,所以每天吃零食的数目越来越少。但是不想减的太快,这样太忧伤了。所以制定了一个计划,是由一个二维数组构成。数组的每个数字代表零食的数目。下面是一个例子
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
当然选取零食数目只能由当前点像上下左右四个方向延伸。那么零食的数目可以为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。
Source
coldsheep
</pre><pre name="code" class="cpp">#include<iostream>
#include<memory.h>
using namespace std;
int a[101][101];
int b[101][101]={0};
int main()
{
int r,c;
while(cin>>r>>c&&!cin.eof())
{
memset(b,0,sizeof(b));
int s=0,m,n,ans=1;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
{
b[i][j]=1;
cin>>a[i][j];
if(a[i][j]>s)
{
s=a[i][j];
m=i;
n=j;
}
}
b[m][n]=0;
int tag=0;
while(tag==0)
{
int t1=0,t2=0,t=0;
if(a[m-1][n]>t&&a[m-1][n]<a[m][n]&&b[m-1][n]==1&&m-1>=1&&m-1<=r&&n>=1&&n<=c)
{
t1=m-1;
t2=n;
t=a[m-1][n];
}
if(a[m+1][n]>t&&a[m+1][n]<a[m][n]&&b[m+1][n]==1&&m+1>=1&&m+1<=r&&n>=1&&n<=c)
{
t1=m+1;
t2=n;
t=a[m+1][n];
}
if(a[m][n-1]>t&&a[m][n-1]<a[m][n]&&b[m][n-1]==1&&m>=1&&m<=r&&n-1>=1&&n-1<=c)
{
t1=m;
t2=n-1;
t=a[m][n-1];
}
if(a[m][n+1]>t&&a[m][n+1]<a[m][n]&&b[m][n+1]==1&&m>=1&&m<=r&&n+1>=1&&n+1<=c)
{
t1=m;
t2=n+1;
t=a[m][n+1];
}
if(t==0)
{
break;
}
m=t1;
n=t2;
b[m][n]=0;
ans++;
if(b[m-1][n]==0&&b[m+1][n]==0&&b[m][n-1]==0&&b[m][n+1]==0)
tag=1;
}
cout<<ans<<endl;
}
return 0;
}