http://acm.pku.edu.cn/JudgeOnline/problem?id=1065

剛開始錯了,下面是出錯的代碼,弄清楚原因下次小心點;
#include?<iostream>
#include?
<algorithm>
using?namespace?std;
struct?TanXin
{
???????
int?width,?length;
}
wood[5001],?record[5001];
bool?order(TanXin?a,?TanXin?b)
{
?????
return??(b.width?+?b.length?>?a.width?+?a.length);
}

int?main()
{
????
int?i,?j;
????
int?n;
????
int?t;
????
int?test;
????
int?l;
????
int?k;
????cin?
>>?test;
????
while(test--)
????
{?????
??????????cin?
>>?n;
??????????
for(i?=?0;?i?<?n;?i++)
??????????????cin?
>>?wood[i].length?>>?wood[i].width;
??????????sort(wood,?wood?
+?n,?order);
?????????
for(i?=?0;?i?<?n;?i++)
????
//??????cout?<<?wood[i].length?<<?"?"?<<?wood[i].width?<<?"?"?<<?wood[i].length?+?wood[i].width?<<?endl;
??????????record[0]?=?wood[0];
??????????l?
=?1;
??????????
for(i?=?1;?i?<?n;?i++)
??????????
{???t?=?1;
??????????????
for(j?=?0;?j?<?l;?j++)
??????????????
{???
??????????????????
//以下的算法錯誤,因為每次都從較小的record[0]開始覆蓋,會產生錯誤的
??????????????????
//例如:?4?,3?5,?8?4,?8?5,?3?100;8,5先覆蓋3,5,所以3,?100?覆蓋不了3,?5正確答案為2,而此時為3;?
??????????????????if(wood[i].width?>=?record[j].width?&&?wood[i].length?>=?record[j].length)
??????????????????
{??
?????????????????????
if(wood[i].width?>?record[j].width)
???????????????????????record[j].width?
=?wood[i].width;
?????????????????????
if(wood[i].length?>?record[j].length)
????????????????????????record[j].length?
=?wood[i].length;
?????????????????????t?
=?0;
????????????????????????
break;
??????????????????}

??????????????}

??????????????
if(t?==?1)
??????????????
{
?????????????????record[l]?
=?wood[i];??
?????????????????l
++;??
??????????????}

????
//??????cout?<<?"record:?"?<<?l?<<?endl;
??????
//??????for(k?=?0;?k?<?l;?k++)
????
//?????????cout?<<?record[k].width?<<?"?"?<<?record[k].length?<<?endl;
??????????}

??????????cout?
<<?l?<<?endl;
????}

????
????
return?0;
}