遞迴
#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...