導航:首頁 > 源碼編譯 > 演算法題wa

演算法題wa

發布時間:2024-09-16 19:13:44

Ⅰ 這道ACM為什麼我是WA。

你這個方法只是局部的兩個是最大字典序,當全部都這樣排好後不一定是最大序。用這樣的方法是錯的。如果是我,會用一個直接的深度優先搜索,然後中間要進行剪枝(不然會TEL的)。
如果例:
3
cc
cca
b
這里的正確答案是:ccccab
而你的答案是:ccaccb

Ⅱ 杭電ACM 1257 為什麼老是WA

這道題目是動態規劃哈,不是貪心,是求最長遞增子序列的.你可一直接網路一下 單調遞增子序列或者直接網路 HDU 1257 你這演算法肯定不對 所以錯了.

這道題要求最長遞增子序列的長度,用二分+DP可求的。

#include <iostream>

using namespace std;

int result[30005]; //用於保存最長遞增子序列

int bisearch(int a[],int lenth,int h) //二分查找插入的位子,如h存在,則返回原位置,既不做改變,否則返回比h大的位子
{
int i=0,j=lenth-1,mid;
while(i<=j)
{
mid=(i+j)/2;
if(a[mid]==h)
return mid;
if(a[mid]>h)
j=mid-1;
else
i=mid+1;
}
return i;
}

int main()
{
int n,h,lenth,pos;
while(scanf("%d",&n)!=EOF) //注意寫上EOF,否則超時
{
result[0]=30005; //初始化最大,第一次執行的是插入操作
lenth=1;
while(n--)
{
scanf("%d",&h);
if(h>result[lenth-1]) //如果h比排頭的大,則將h作為新的排頭,長度增加,注意是>不是>=,
//如果有=則表示非遞減序列,與題意不符
result[lenth++]=h;
else //否則進行插入操作,將比h大一點的數覆蓋,不影響結果
{
pos=bisearch(result,lenth,h);
result[pos]=h;
}
}
printf("%d\n",lenth);
}
return 0;
}

閱讀全文

與演算法題wa相關的資料

熱點內容
linux自啟動配置文件 瀏覽:927
生存為什麼不能使用命令方塊 瀏覽:204
java與sqlserver資料庫連接 瀏覽:21
鐵路解壓視頻全過程 瀏覽:442
主備核心交換機如何連接伺服器 瀏覽:704
白金卡哪個app最靠譜 瀏覽:666
本田汽車空調壓縮機保險絲 瀏覽:155
康佳led47r5500pdf通病 瀏覽:821
cad圓相切命令 瀏覽:69
bmp文件夾打開 瀏覽:502
u盤裝系統文件下載到哪個文件夾 瀏覽:21
es系統封裝教程程序員大本營 瀏覽:523
程序員聚餐喝什麼酒好 瀏覽:608
編譯程序生成安裝文件 瀏覽:955
linux查看usb設備 瀏覽:284
安卓怎麼禁止app充值 瀏覽:559
動盪對加密貨幣的影響 瀏覽:358
國家反詐app哪裡看注冊時間 瀏覽:563
打孔式文件夾怎麼裝視頻 瀏覽:29
php怎麼學比較好 瀏覽:381