您的位置:首页 > 其它

HDOJ 1160 FatMouse's Speed

2011-07-31 21:55 288 查看
  第一个用动态规划完成的题目O(∩_∩)O哈哈~。忘记赋值之前的判断了,结果悲剧WA,算是第一次使用动态规划的一个小教训吧。

View Code

//#include <fstream>
#include<iostream>
#include <memory>
#include <algorithm>
using namespace std;
struct Mice
{
int weight;
int speed;
int pos;
};
int cmp( const void *a , const void *b )
{
struct Mice *c = (Mice *)a;
struct Mice *d = (Mice *)b;
if(c->weight >d->weight) return 1;
else if(c->weight <d->weight) return -1;
else return 0;
}
int FatMouseSpeed(int len,int* traceLength,int* trace,Mice* m)
{
qsort(m,len,sizeof(Mice),cmp);
int max=0;
for(int i=1;i<len;i++)
{
for(int temp=0;temp<i;temp++)
{
if(m[i].weight>m[temp].weight&&m[i].speed<m[temp].speed)
{
if(traceLength[i]<traceLength[temp])//这里错的太纠结
{
trace[i]=temp;
traceLength[i]=traceLength[temp];
}
}
}
traceLength[i]++;
if(traceLength[i]>traceLength[max])
max=i;

}
return max;
}
void output(Mice* m,int* trace,int*traceLength,int pos)
{
if(traceLength[pos]!=1)
output(m,trace,traceLength,trace[pos]);
cout<<m[pos].pos<<endl;
}
int main()
{
//fstream cin("FatMouseSpeed.txt");
int len=0;
int trace[1001]={0};
int traceLength[1001]={1};
Mice mice[1001];
while(cin>>mice[len].weight>>mice[len].speed)
{
mice[len].pos=len+1;
len++;
}
int pos=FatMouseSpeed(len,traceLength,trace,mice);
cout<<traceLength[pos]<<endl;
output(mice,trace,traceLength,pos);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: