![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
程序设计专栏
编程算法问题
ningchewinbell
这个作者很懒,什么都没留下…
展开
-
位运算
常用技巧1.位运算符“^” 按位异或“&” 按位与“|” 按位或“~” 取反“<<” 算术左移“>>” 算术右移1.给定两个十进制数,求他们二进制表示的不同位的个数。(力扣416)int x,y;int diff=x^y,ans=0;while(diff){ ans+=diff&1; diff>>=1;}cout<<ans<<endl;2.给定一个十进制整数,输出它在二进制下的翻转结果。(力扣190原创 2020-09-04 09:49:33 · 213 阅读 · 0 评论 -
巧解数学问题
1.判断一个数的阶乘结果有几个0(力扣172)题解:每个尾部的 0 由 2 × 5 = 10 而来,因此我们可以把阶乘的每一个元素拆成质数相乘,统计有 多少个 2 和 5。明显的,质因子 2 的数量远多于质因子 5 的数量,因此我们可以只统计阶乘结果 里有多少个质因子 5。int trailingZeroes(int n) { return n == 0? 0: n / 5 + trailingZeroes(n / 5); }2.数字字符串求和(力扣415)题解:因为相加运算是从后往前进原创 2020-09-03 16:22:43 · 161 阅读 · 0 评论 -
C++相关STL
unordered_map// 声明unordered_map<int ,int>counts;// 直接通过key赋值for(i=0;i<n;i++)counts[num[i]]++;// 遍历输出for(const auto & p : counts)cout<<counts.first<<counts.second<<endl;vector <vector<int> >vector <原创 2020-08-28 20:23:09 · 144 阅读 · 0 评论 -
高斯日志--日期换算
思路:平年闰年天数不一样,每个月的天数也不一样,分别用数组存起来,拿总得天数倒减。代码:#include <iostream>#include<stdio.h>using namespace std;int isyear(int n){ if(n%400==0||(n%4==0&&n%100!=0))return 1; return ...原创 2018-02-28 18:13:12 · 1195 阅读 · 0 评论 -
素数环
#include <iostream>#include<algorithm>#include<cstring>using namespace std;int a[45],vis[45],prime[45];int isprime(int n){ for(int i=2;i<n;i++) { if(n%i==0){return 0;...原创 2018-03-12 20:43:36 · 115 阅读 · 0 评论 -
八皇后(回溯)
#include #include#includeusing namespace std;int a[99],vis[99];int n,kase;dfs(int step,int n){ if(step==n) { cout for(int i=0;i { for(in原创 2018-03-12 20:42:43 · 128 阅读 · 0 评论 -
L1-009N个分数求和
1.求最小公倍数及求最大公约数的函数2.scanf输入功能很强大3.有一些特殊的测试案列:30/1 0/2 0/312/1030/1 0/2 5/10#include #includeusing namespace std;long long gcb(long long a,long long b){原创 2017-02-26 14:14:12 · 551 阅读 · 0 评论 -
1007最大连续子集
注意:当最后sum一直小于零时,输出0,以及数组的第一个元素和最后一个元素代码如下:#include using namespace std;int n,num[10002][10002],a[10002];int main(){ cin>>n; for(int i=1;i cin>>a[i]; for(int i=1;原创 2017-03-02 15:48:44 · 324 阅读 · 0 评论 -
L2-006&&L2-011二叉树层遍历
一直很怕有关树的题,做了几个之后发现也还好,要克服恐惧!!!1.一直后序中序,求层序:#include #includeusing namespace std;vectorc(999999,-1);int n,in[33],post[33];void getpost(int root,int start,int end,int index){ if(sta原创 2017-03-01 20:01:40 · 216 阅读 · 0 评论 -
二叉树的遍历
1.由后序中序输出前序#include using namespace std;int post[] = {3, 4, 2, 6, 5, 1};int in[] = {3, 2, 4, 1, 6, 5};void pre(int root, int start, int end) { if(start > end) return ; int i = star转载 2017-03-01 11:40:43 · 138 阅读 · 0 评论