基礎演算法例題(遞迴 分治 )

2021-10-08 06:01:08 字數 1435 閱讀 8071

遞迴

#include#include#includeusing namespace std;

void comp(int arr, int l, int r, int &max1, int &max2)

else if (r - l == 1)

else

else

}}int main()

printf("\n");

comp(a, 0, n - 1, max1, max2);

printf("最大值為: %d \n次大值為: %d \n", max1, max2);

system("pause");

return 0;

}

3、動態規劃

① 使用動態規劃法,求 fibonacci 數列

#includeusing namespace std;

int main()

if (n % 2 == 0)

cout << b << endl;

else

cout << a << endl;

system("pause");

return 0;

}

②求解整數拆分問題

#includeusing namespace std;

const int n = 1000;

int f[n][n];//表示數i分解成最大數為j的種數

int main()

} cout << f[n][k] << endl;

system("pause");

return 0;

}

③求解0/1揹包問題

#include#includeusing namespace std;

const int n = 10000;

int n,v;

int v[n], w[n], f[n];

int main()

cout << f[v] << endl;

return 0;

}

④ 最長公共子串行

#include#includeusing namespace std;

const int n = 10000;

int n;

int a[n], f[n];

int main()

} int res = 0;

for (int i = 1; i <= n; i++)

res = max(res, f[i]);

cout << res << endl;

system("pause");

return 0;

}

遞迴演算法講解(演算法 例題)

乙個問題只要同時滿足以下3個條件,就可以用遞迴來解決 題目鏈結 include using namespace std void hanno int n,char a,char b,char c int main 題目鏈結 include using namespace std intpass in...

Dijkstra演算法 例題

dijkstra演算法 從起點到終點求最短路 使用要求權值為正 1 求短路i 題目 點數 500 邊數 1e5 include include include using namespace std const int n 510,m 1e5 10 時間複雜度o n m int n,m 鄰接矩陣 i...

模擬演算法例題

一 火柴棒 題目描述 給你n根火柴棍,你可以拼出多少個形如 a b c 的等式?等式中的a b c是用火柴棍拼出的整數 若該數非零,則最高位不能是0 用火柴棍拼數字0 9的拼法如圖所示 注意 1 加號與等號各自需要兩根火柴棍 2 如果a b,則a b c與b a c視為不同的等式 a b c 0 3...