//#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);}
總結與教訓:
1、第一個用動態規劃完成的題目O(∩_∩)O哈哈~
2、忘記賦值之前的判斷了,結果悲劇WA,算是第一次使用動態規劃的一個小教訓吧