CPP
cpp知识学习
ailinyingai
DevOps 搬砖人 干饭人
展开
-
fib
斐波那契前 n 项平方和是多少? 为了防止答案过大,请将最后的答案模 1e9+7 输入描述: 第一行一个整数 n(1<=n<=1e18) 输出描述: 在一行中输出斐波那契数列的前 n 项平方和模 1e9+7 #include<bits/stdc++.h> using namespace std; typedef long long ll; const ll p = 1e9 ...原创 2020-01-22 15:07:01 · 176 阅读 · 0 评论 -
dijistra
#include<stdio.h> #include<string.h> int main()//无向图1到各个顶点的最小距离 { int mp[101][101],m,n,a,b,c,dis[101],vis[101],xx=0; memset(dis,0x3f3f3f3f,sizeof(dis)); memset(vis,0,sizeof(vis)); mem...原创 2020-01-13 11:35:01 · 143 阅读 · 1 评论 -
LCS
#include<iostream> #include<string.h> using namespace std; //dp[i][j]:串(x1,x2,...,xi)与串(y1,y2,...,yj), //d[i][j]表示这两个串结与最长公共子串结尾相同时,最长公共子串的长度 //状态转移方程如下: //若i=0或j=0,则dp[i][j] = 0 //否则...原创 2020-01-13 10:46:07 · 171 阅读 · 0 评论 -
dp 钢条
pair<vector<int>, vector<int> > ButtomUpCutRodSolution(vector<int> &priceList, int n) { vector<int> highest; //每个元素依次记录长度递增的钢条最优解结果 vector<int> solution(price...原创 2020-01-11 17:41:09 · 86 阅读 · 0 评论 -
汉诺塔
#include<stdio.h> #include<math.h> #define N 100 int main() { long long n,m,a[N]={0}; long long i,r; for(i=1;i<=n;i++) { a[i]=pow(2,i-1); } while(~scanf("%lld%lld",&n,&am...原创 2020-01-11 13:51:21 · 148 阅读 · 0 评论 -
冒泡改进
void bubble_sort2(int a[], int size) { int k; bool flag; k = size; flag = true; while (flag) { flag = false; int j; for (j = 1; j < k; j++) { int temp; if (a[j - 1] > a[j]) { ...原创 2020-01-11 11:27:56 · 132 阅读 · 0 评论 -
合唱队问题
8 186 186 150 200 160 130 197 200 </pre></td></tr><tr><td class="grid_left_td">样例输出:</td><td><pre>4 </pre></td&...翻译 2020-01-11 11:06:13 · 210 阅读 · 0 评论 -
最长递增子序列
最长递增子序列(Longest Increasing Subsequence)是指找到一个给定序列的最长子序列的长度,使得子序列中的所有元素单调递增。 例如:{ 3,5,7,1,2,8 } 的 LIS 是 { 3,5,7,8 },长度为 4。 // LIS 的动态规划方式实现 #include <iostream> using namespace std; int getLISLen...原创 2020-01-11 11:03:46 · 189 阅读 · 0 评论 -
全排列
void Permutation(char* pStr, char* pBegin) { assert(pStr && pBegin); if(*pBegin == '\0') printf("%s\n",pStr); else { for(char* pCh = pBegin; *pCh != '\0'; pCh++) { swap(*pBegin,*...原创 2020-01-11 10:48:29 · 108 阅读 · 0 评论 -
汽水瓶
//方法一:找到规律就这么简单n/2 void fun1() { int n; //注意这里输入不确定个整数,以0结束的输入方式 while (cin >> n, n) { if (n < 0) break; cout << n / 2 << endl; } } //方法二: int fun2(int n) { int remai...原创 2020-01-11 10:40:06 · 137 阅读 · 0 评论 -
点数和
#include <iostream> #include <time.h> #include <vector> #include <assert.h> #include <list> #include <math.h> using namespace std; //计算n个骰子某次投掷点数和为s的出现次数 int Count...原创 2020-01-11 09:32:12 · 216 阅读 · 0 评论 -
位运算
奇偶性 int a; cin >> a; if (a & 1) cout << "奇数" << endl; if ((a & 1) == 0) //注意:&的优先级低于==的优先级,因此if内部与运算必须加括号! cout << "偶数" << endl; 2、 不借助变量交换两个数 3 ...原创 2020-01-11 09:21:42 · 599 阅读 · 1 评论 -
约瑟夫
在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k...原创 2020-01-10 17:42:16 · 319 阅读 · 0 评论 -
加减乘除
//加法 int BinaryAdd(int a, int b) { int carry, add; do { add = a ^ b; //该操作得到本位的加法结果 carry = (a & b) << 1; //该操作得到该位对高位的进位值 a = add; b = carry; } while (carry != 0); //循环直到某次运算没有进位,运算结束 retur...原创 2020-01-10 15:13:04 · 659 阅读 · 0 评论 -
不借助变量交换两个数
//A方法 void test(int &a, int &b) { if (a != b) { a = a + b; b = a - b; a = a - b; cout << "OK " << endl; } } //B方法 void Swap(int &a, int &b) { if ...原创 2020-01-10 15:05:53 · 124 阅读 · 0 评论 -
扑克牌中的顺子
class Solution { public: bool IsContinuous( vector<int> numbers ) { if(numbers.empty()) return false; sort(numbers.begin(),numbers.end()); int n=numbers.size(),numzer...翻译 2020-01-09 08:55:37 · 96 阅读 · 0 评论 -
做家务
#include<stdio.h> int K; int a[3]; int b[3]; int f(int x,int y,int z); int main() { scanf("%d",&K); while(K–) { for(int i=0;i<3;i++) scanf("%d",&a[i]); for(int i=0;i<3;i++) scanf("...原创 2020-01-03 11:49:44 · 177 阅读 · 0 评论