| ||||||||||
| 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 | |||||||||
不知道这种方法是不是dp 。。 185ms 新手编程请教大家#include<iostream>
using namespace std;
int main()
{
int R,C,m,n,t1,t2;
int i,j,k,p=0;
int a[105][105],
b[10005][2],
c[105][105];
int ma[4][2]={{1,0},{-1,0},{0,-1},{0,1}};
int MAX=0;
while(cin>>R>>C){
memset(c,0,sizeof(c));
for(i=1;i<=R;i++)
for(j=1;j<=C;j++)
{
cin>>a[i][j];
b[++p][0]=a[i][j];
b[p][1]=p;
}
for(i=1;i<p;i++)
for(j=i+1;j<=p;j++)
{
if(b[i][0]>b[j][0])
{
t1=b[j][0];
t2=b[j][1];
b[j][0]=b[i][0];
b[j][1]=b[i][1];
b[i][0]=t1;
b[i][1]=t2;
}
}
for(i=1;i<=p;i++)
{
int max=0;
if(b[i][1]%C!=0)
{
m=b[i][1]/C+1;
n=b[i][1]%C;}
else
{
m=b[i][1]/C;
n=C;}
for(j=0;j<4;j++)
if((c[m+ma[j][0]][n+ma[j][1]]>max)&&(a[m][n]>a[m+ma[j][0]][n+ma[j][1]]))
max=c[m+ma[j][0]][n+ma[j][1]];
c[m][n]=++max;
if(c[m][n]>MAX)
MAX=c[m][n];
}
cout<<MAX;
MAX=0;
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator