网站建设 软文,南昌的网站建设公司,怎么向百度提交网站地图,呼市企业网站制作专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客#xff0c;如有问题交流#xff0c;欢迎评论区留言#xff0c;一定尽快回复#xff01;#xff08;大家可以去看我的专栏#xff0c;是所有文章的目录#xff09; 文章字体风格#xff1a; 红色文字表示#…专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客如有问题交流欢迎评论区留言一定尽快回复大家可以去看我的专栏是所有文章的目录 文章字体风格 红色文字表示重难点★✔ 蓝色文字表示思路以及想法★✔ 如果大家觉得有帮助的话感谢大家帮忙 点赞收藏转发 本博客带大家一起学习我们不图快只求稳扎稳打。 由于我高三是在家自学的经验教训告诉我学习一定要长期积累并且复习所以我推出此系列。 只求每天坚持40分钟一周学5天复习2天 也就是一周学10道题 60天后我们就可以学完81道题相信60天后我们一定可以有扎实的代码基础我们每天就40分钟和我一起坚持下去吧 qq群878080619 第二十四天【考研408-数据结构笔试】 十四、摩尔投票法1. 数组中出现次数超过一半的数字 十五、DFS1. 全排列( 北京大学考研机试题 )2. 八皇后 北京大学考研机试题 二十二、高精度1. N的阶乘做法预处理 2. 基本算术3. 整数查询 十四、摩尔投票法
1. 数组中出现次数超过一半的数字 class Solution {
public:int moreThanHalfNum_Solution(vectorint nums) {int cnt 0, val;for (auto x: nums) {if (!cnt) val x, cnt ;else if (x val) cnt ;else cnt -- ;}return val;}
};十五、DFS
1. 全排列( 北京大学考研机试题 ) #include iostream
#include cstring
#include algorithmusing namespace std;const int N 10;int n;
char str[N], path[N];
bool st[N];void dfs(int u)
{if (u n) cout path endl;else{for (int i 0; i n; i )if (!st[i]){path[u] str[i];st[i] true;dfs(u 1);st[i] false;}}
}int main()
{cin str;n strlen(str);dfs(0);return 0;
}2. 八皇后 北京大学考研机试题 #includeiostreamusing namespace std;const int N 100;int g[N][N];
bool l[N*2],ll[N*2],lll[N*2];
int d[N],idx;
int n;void dfs(int u,int sum)
{if(u8){d[idx] sum;}else{for(int i 1; i 8; i){if(l[i] false ll[iu] false lll[i-u9] false){l[i] true;lll[i-u9] true;ll[iu] true;dfs(u1,sum*10i);l[i] false;lll[i-u9] false;ll[iu] false;}}}
}int main()
{cin n;dfs(1,0);while(n--){int x;cin x;cout d[x] endl;}return 0;
}高精度计算核心就是
通过数组模拟出草稿纸上的运算过程
具体逻辑可以搜csdn
二十二、高精度
1. N的阶乘 做法预处理
#include iostream
#include cstring
#include algorithm
#include vectorusing namespace std;const int N 1010;vectorint F[N];vectorint mul(vectorint A, int b)
{vectorint C;for (int i 0, t 0; i A.size() || t; i ){if (i A.size()) t A[i] * b;C.push_back(t % 10);t / 10;}return C;
}int main()
{int n;F[0] {1};for (int i 1; i 1000; i ) F[i] mul(F[i - 1], i);while (cin n){for (int i F[n].size() - 1; i 0; i -- )cout F[n][i];cout endl;}return 0;
}2. 基本算术 #include iostream
#include cstring
#include algorithm
#include vectorusing namespace std;int add(vectorint A, vectorint B)
{int res 0;for (int i 0, t 0; i A.size() || i B.size() || t; i ){if (i A.size()) t A[i];if (i B.size()) t B[i];t / 10;res t;}return res;
}int main()
{string a, b;while (cin a b, a ! 0 || b ! 0){vectorint A, B;for (int i a.size() - 1; i 0; i -- ) A.push_back(a[i] - 0);for (int i b.size() - 1; i 0; i -- ) B.push_back(b[i] - 0);int res add(A, B);if (!res) puts(No carry operation.);else if (res 1) puts(1 carry operation.);else printf(%d carry operations.\n, res);}return 0;
}3. 整数查询 #include iostream
#include cstring
#include algorithm
#include vectorusing namespace std;vectorint add(vectorint A, vectorint B)
{vectorint C;for (int i 0, t 0; i A.size() || i B.size() || t; i ){if (i A.size()) t A[i];if (i B.size()) t B[i];C.push_back(t % 10);t / 10;}return C;
}int main()
{vectorint A{0};string b;while (cin b, b ! 0){vectorint B;for (int i b.size() - 1; i 0; i -- )B.push_back(b[i] - 0);A add(A, B);}while (A.size() 1 !A.back()) A.pop_back();for (int i A.size() - 1; i 0; i -- )cout A[i];cout endl;return 0;
}