程序设计专栏
编程算法问题
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 · 283 阅读 · 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 · 236 阅读 · 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 · 214 阅读 · 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 · 1405 阅读 · 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 · 165 阅读 · 0 评论 -
八皇后(回溯)
#include #include #include using 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 · 199 阅读 · 0 评论 -
L1-009N个分数求和
1.求最小公倍数及求最大公约数的函数 2.scanf输入功能很强大 3.有一些特殊的测试案列: 3 0/1 0/2 0/3 1 2/10 3 0/1 0/2 5/10 #include #include using namespace std; long long gcb(long long a,long long b) {原创 2017-02-26 14:14:12 · 635 阅读 · 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 · 397 阅读 · 0 评论 -
L2-006&&L2-011二叉树层遍历
一直很怕有关树的题,做了几个之后发现也还好,要克服恐惧!!! 1.一直后序中序,求层序: #include #include using 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 · 279 阅读 · 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 · 187 阅读 · 0 评论
分享