問題描述
以前有個孩子,他分分鐘都在碎碎念。不過,他的念頭之間是有因果關係的。他會在本子裡記錄每乙個念頭,並用箭頭畫出這個念頭的**於之前的哪乙個念頭。翻開這個本子,你一定會被互相穿梭的箭頭給攪暈,現在他希望你用程式計算出這些念頭中最長的一條因果鏈。
將念頭從1到n編號,念頭i**於念頭from[i],保證from[i]2->5 (from[5]=2,from[2]=1,from[1]=0)
1->2->7 (from[7]=2,from[2]=1,from[1]=0)
3->4->6 (from[6]=4,from[4]=3,from[3]=0)
3->4->8 (from[8]=4,from[4]=3,from[3]=0)
資料規模和約定
1<=n<=1000
思路:
1. dp【i】表示當前序號滿足的最長的長度
dp【i】 = dp【from【i】】 + 1;dp【i】為 i 的念頭的最大長度+1
#include #include using namespace std;
int n;
int from[1002];
int dp[1002];
int maxn = 0;
int main()
for(int i = 1; i <= n; i++)
printf("%d", maxn);
return 0;
}
藍橋杯 演算法提高 分解質因數
問題描述 給定乙個正整數n,嘗試對其分解質因數 輸入格式 僅一行,乙個正整數,表示待分解的質因數 解題 一不小心就容易超時 參考了這篇部落格 include include include include include include define inf 0x3f3f3f3f using nam...
藍橋杯 ADV 131演算法提高 選擇排序
問題描述 排序,顧名思義,是將若干個元素按其大小關係排出乙個順序。形式化描述如下 有n個元素a 1 a 2 a n 從小到大排序就是將它們排成乙個新順序a i 1 i k 為這個新順序。選擇排序的思想極其簡單,每一步都把乙個最小元素放到前面,如果有多個相等的最小元素,選擇排位較考前的放到當前頭部。還...
藍橋杯 ADV 20 演算法提高 交換Easy
問題描述 給定n個整數組成的序列,每次交換當前第x個與第y個整數,要求輸出最終的序列。輸入格式 第一行為序列的大小n 1 n 1000 和操作個數m 1 m 1000 第二行包含n個數字,表示初始序列。接下來m行,每行兩個整數x,y 1 x,y n 表示要交換的兩個整數。在一次交換中,如果x和y相等...