
也总有那么几天特别想你
qq_52051345
博客转移至www.acming.net和51codefly.com
展开
-
6174问题
#include<stdio.h>#include<string.h>int num[2000];int count;int get_next(int x){ int a, b, n; char s[10]; sprintf(s, "%d", x);//转化为字符串 n = strlen(s); for (int i = 0; i < n - 1;...原创 2019-02-01 11:45:46 · 142 阅读 · 0 评论 -
周期字符串
输出一个字符串的最小周期#include<stdio.h>#include<string.h>int main(){ char word[100]; scanf("%s", word); int i, j; int ok; int len = strlen(word); for (i = 1; i < len; i++) { if (len ...原创 2019-01-30 17:09:25 · 258 阅读 · 0 评论 -
小学生算术
输出进位次数#include<stdio.h>#include<string.h>int main(){ int a, b; while (scanf("%d%d", &a, &b) == 2) { if (!a&&!b) { break; } int c = 0, ans = 0; for (int ...原创 2019-01-30 17:30:13 · 255 阅读 · 0 评论 -
火车出入站(栈)
给定 n 个数的排列 a 和一个栈,n 个值的入栈顺序为 1,2,⋯n,判断出栈顺序是否可以是排列 a。#include <iostream>#include <vector>#include <stack>using namespace std;int main() { int n; cin >> n; vect...原创 2019-02-22 11:54:12 · 1053 阅读 · 0 评论 -
快速幂
首先很容易理解下面三个结论:&1 的结果就是取二进制的最末位x&1 == 0,x为偶x&1 ==1, x为奇#include<iostream>using namespace std; unsigned long long int poww(int a, int b){ unsigned long long int ans = 1; unsig...原创 2019-02-18 11:12:13 · 95 阅读 · 0 评论 -
求最大公因数
int gcd(int x, int y){ return y ? gcd(y, x % y) : x;}原创 2019-02-18 12:44:12 · 143 阅读 · 0 评论 -
C++STL(vector、set、map、stack、queue)的使用
一、vector构造一个动态数组C++中直接构造一个动态数组语句为: vector&amp;amp;amp;amp;lt; T &amp;amp;amp;amp;gt; vec,T可以是float,int,double或者其他自定义数据类型示例:vector&amp;amp;amp;amp;lt;int&amp;amp;amp;amp;gt; a//定义一个动态数组a插入元素C++中通过push_back()在最后面原创 2019-02-19 18:25:56 · 6473 阅读 · 0 评论 -
报数游戏
有 7 个小朋友做游戏,他们的编号分别是 1,2,3…7。他们按照编号从小到大依次顺时针围成一个圆圈,第一个小朋友从 1开始报数,依次按照顺时针方向报数(报数的值加一),每个报 5 的人会离开队伍,然后下一个小朋友会继续从 1 开始报数,直到只剩一个小朋友为止。问最后剩下小朋友编号是几号?#include <iostream>#include <queue>using...原创 2019-02-25 10:55:17 · 1011 阅读 · 0 评论 -
C++实现大数加法运算
#include &lt;iostream&gt;#include &lt;algorithm&gt;#include &lt;string&gt;const int N = 1e6;using namespace std;char _a[N], _b[N];string add(string a, string b){ a = a.substr(a.find_first_not_原创 2019-03-05 17:16:18 · 459 阅读 · 0 评论 -
对比dfs与bfs解决迷宫题目的区别
一天蒜头君掉进了一个迷官里面,蒜头君想逃出去,可怜的蒜头君连迷官是否有能逃出去的路都不知道。看在蒜头君这么可怜的份上,就请聪明的你告诉蒜头君是否有可以逃出去的路。输入格式第一行输入两个整数n和m,表示这是一个n X m的迷宫。接下来的输入一个n行m列的迷宫。其中’S’ 表示蒜头君的位置’*’ 表示墙,蒜头君无法通过,’. ‘表示路,蒜头君可以通过’.'移动,‘T’ 示迷宫的出口(蒜头君每次只...原创 2019-03-07 11:08:40 · 846 阅读 · 0 评论 -
分治法
分治法的概念:作为五大算法之一的分治法,可算是最早接触的一种算法。分治法,与其说是一种算法,不如将其称为策略来的更贴切一些。算法的思想就是将大问题分成小问题,并解决小问题之后合并起来生成大问题的解。分治法的精髓:分–将问题分解为规模更小的子问题;治–将这些规模更小的子问题逐个击破;合–将已解决的子问题合并,最终得出“母”问题的解;分治法的作用,自然是让程序更加快速地处理问题。比如一个n...原创 2019-03-14 20:00:45 · 1011 阅读 · 0 评论 -
蓝桥杯总结-常用函数及算法
http://www.cnblogs.com/chengyu404/p/5600739.html转载 2019-03-14 20:01:37 · 3153 阅读 · 0 评论 -
关于Floyd和Dijkstra最短路算法
Floyd最短路:/*16 14 7911 5 633 19 2613 12 4114 7 2815 3 74 5 1820 7 4310 16 388 4 551 12 1006 5 107 6 7818 7 7719 16 612 18 472 3 639 19 1717 2 100*/#include<bits/stdc++.h>u...原创 2019-03-15 21:26:58 · 283 阅读 · 0 评论 -
C++大数乘法运算
#include <iostream>#include <algorithm>#include <string>using namespace std;string multiply(string a, string b){ int len = a.size() + b.size() + 10; string ans(len, '0'); rev...原创 2019-03-16 16:34:53 · 932 阅读 · 0 评论 -
STL中的二分查找
1.lower_bound与upper_bound两个函数的用法类似,在一个左闭右开的有序区间里进行二分查找,需要查找的值由第三个参数给出。对于upper_bound来说,返回的是被查序列中第一个大于查找值的指针,也就是返回指向被查值>查找值的最小指针,lower_bound则是返回的是被查序列中第一个大于等于查找值的指针,也就是返回指向被查值>=查找值的最小指针。#includ...原创 2019-03-16 17:17:08 · 307 阅读 · 0 评论 -
线性时间选择
给定n个元素和1个k,1<=k<=n,要求找出这n个元素中第k小的元素。#include <iostream>#include <cstdlib>#include <ctime>using namespace std;//快排int Partition(int a[], int low, int high){ int i = low,...原创 2019-03-20 20:55:01 · 733 阅读 · 0 评论 -
棋盘覆盖
在一个 2^k * 2^k 个方格组成的棋盘中,若恰有一个方格与其它方格不同,则称该方格为一特殊方格,称该棋盘为一特殊棋盘。显然特殊方格在棋盘上出现的位置有 4^k 种情形。因而对任何 k>=0 ,有 4^k 种不同的特殊棋盘。下图所示的特殊棋盘为 k=2 时 16 个特殊棋盘中的一个。...原创 2019-03-21 11:30:36 · 276 阅读 · 0 评论 -
C++笔记
class Clock {public: Clock() =default; //指示编译器提供默认构造函数 Clock(int newH, int newM, int newS); //构造函数private: int hour, minute, second;};原创 2019-03-29 14:54:33 · 253 阅读 · 1 评论 -
竖式问题
找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有的数字都属于一个特定的集合。#include<stdio.h>#include<string.h>int main(){ char s[20], buf[99]; int count = 0; int abc, de, x, y, z; int ok, i; scanf("%s",...原创 2019-01-30 16:02:41 · 191 阅读 · 0 评论 -
子集生成(增量构造法、位向量法、二进制法)
生成集合{0,1,2,3…n}的子集样例输入:3样例输出:00 10 1 20 1 2 30 1 30 20 2 30 311 21 2 31 322 33一、增量构造法#include&amp;lt;stdio.h&amp;gt;int a[20];void sutset(int n, int a[], int cur){ for(int i = 0; i ...原创 2019-02-09 16:49:23 · 459 阅读 · 0 评论 -
字母重排
#include<stdio.h>#include<string.h>#include<stdlib.h>/*测试数据:tarp given score refund only trap work earn course pepper part ***rsco nfuder aptr oresuc*/int n;char word[2000][1...原创 2019-02-01 12:46:30 · 245 阅读 · 0 评论 -
Cantor数表
第一项是1/1,第二项是是1/2,第三项是2/1,第四项是3/1,第五项是2/2#include&lt;stdio.h&gt;int main(){ int n, k, s; while (scanf("%d", &amp;n) == 1) { k = 0; s = 0; while(s &lt; n) { k++; s += k; }原创 2019-02-01 13:15:01 · 288 阅读 · 0 评论 -
因子和阶乘
#include<stdio.h>#include<string.h>//素数判定int is_prime(int n){ for (int i = 2; i * i <= n; i++) { if (n % i == 0) { return 0; } } return 1;} int prime[100];int p[100...原创 2019-02-01 13:56:26 · 197 阅读 · 0 评论 -
卡片游戏
①用数组queue来实现这个队列#include&amp;lt;stdio.h&amp;gt;const int maxn = 50;int queue[maxn]; int main(){ int n, front, rear; scanf(&quot;%d&quot;, &amp;amp;n); front = 0; rear = n; for (int i = 0; i &a原创 2019-02-01 15:36:56 · 355 阅读 · 0 评论 -
移动小球
我有小球,从左到右一次编号为1,2,3,…,n你可以执行两种指令:A X Y表示把小球X移动到小球Y的左边,B X Y表示把小球X移动到小球Y的右边。指令保证合法,即X不等于Y。#include&amp;amp;lt;stdio.h&amp;amp;gt;/*测试数据:6 2A 1 4B 3 5输出样例:2 1 4 5 3 6 */int Find(int x, int a[], int n){ fo...原创 2019-02-02 11:34:25 · 205 阅读 · 0 评论 -
小球下落
有一棵二叉树,最大深度为D,且所有的叶子深度都相同。所有结点从上到下从左到右编号为1,2,3,…,2eD-1。在结点1处放一个小球,它会往下落。每个结点上都有一个开关,初始全部关闭,当每次有小球落到一个开关上时,它的状态都会改变。当小球到达一个内结点时,如果该结点的开关关闭,则往上走,否则往下走,直到走到叶子结点,如下图所示。一些小球从结点1处依次开始下落,最后一个小球将会落到哪里呢?输入叶子深...原创 2019-02-02 16:17:49 · 334 阅读 · 0 评论 -
层次遍历
输入一颗二叉树,你的任务是按从上到下,从左到右的顺序输出各个节点的值。每个节点都按照从根节点到它的移动序列给出(L表示左,R表示右)。在输入中,每个节点的左括号之间没有空格,相邻节点之间用一个空格隔开。每棵树的输入用一对空括号()结束(这对括号本身不代表一个结点),如图所示。注意,如果从根到某个叶节点的路径上有的结点没有再输入中给出,或者给出了超过一次,应当输出-1.结点个数不超过256.#...原创 2019-02-03 17:54:49 · 639 阅读 · 0 评论 -
蛇形填数
#include<stdio.h>#include<string.h>int main(){ int a[10][10]; int n, x, y, tot; scanf("%d", &n); memset(a, 0, sizeof(a)); tot = a[x = 0][y = n - 1] = 1; while (tot < n*n) ...原创 2019-01-29 18:10:46 · 148 阅读 · 0 评论 -
二叉树重建
四种基本的遍历思想为:前序遍历:根结点 —> 左子树 —> 右子树中序遍历:左子树—> 根结点 —> 右子树后序遍历:左子树 —> 右子树 —> 根结点层次遍历:仅需按层次遍历就可以前序遍历:A B C D E F中序遍历:C B D A E F后序遍历:C D B F E A层次遍历:A B E C D F#include<stdio...原创 2019-02-08 10:46:10 · 100 阅读 · 0 评论 -
简单枚举
输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a-j恰好为数字0-9的一个排列,2<=n<=79。样例输入:62样例输出:79546/01283=6294736/01528=62#include<stdio.h>//判断数字是否相同 int f(int m, int n){ int num[10] = {0}; if...原创 2019-02-08 11:41:54 · 309 阅读 · 0 评论 -
最大乘积
输入n个元素组成的序列S,找出一个乘积最大的连续子序列。#include&lt;stdio.h&gt;int main(){ long long int s, max; int n; int num[22]; max = 0; scanf("%d", &amp;n); for (int m = 0; m &lt; n; m++) { scanf("原创 2019-02-08 12:10:26 · 130 阅读 · 0 评论 -
分数拆分
现在输入一个正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y.样例输入:2样例输出:1/2=1/6+1/31/2=1/4+1/4#include<stdio.h>int main(){ int k, x, y; while (scanf("%d", &k) == 1) { for (y = k + 1; y <= 2 * k;...原创 2019-02-08 12:27:47 · 885 阅读 · 0 评论 -
双基回文数
如果一个正整数n至少在两个不同的进位制b1和b2下都是回文数(2<=b1,b2<=10),则称n是双基回文数(注意,回文数不能包含前导0)。输入正整数S<10^6,输出比S大的最小双基回文数。输入样例:1600000输出样例:1632995#include<stdio.h>int is_huiwen(int a[], int len){ for(...原创 2019-02-08 15:03:13 · 230 阅读 · 0 评论 -
递归生成1~n的排列
#include<stdio.h>#include<stdlib.h>int a[25];void printf_permutation(int n, int *a, int cur) { if (cur == n)//递归边界 { for (int i = 0; i < n; i++) { printf("%d", a[i]);//打印...原创 2019-02-08 17:16:00 · 288 阅读 · 0 评论 -
下一个排列
#include<iostream>#include<algorithm>using namespace std;//next_permutation排到降序后返回false//prev_permutation与之相反 /*Sort函数有三个参数:(1)第一个是要排序的数组的起始地址。(2)第二个是结束的地址(最后一位要排序的地址的下一地址)(3)第三个参...原创 2019-02-08 17:59:54 · 106 阅读 · 0 评论 -
最长回文子串(1)
忽略字符串中的大小写#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;string.h&amp;gt;#include&amp;lt;ctype.h&amp;gt; #define MAXN 5000+10//测试数据:ConfuciusssayMadamImAdam//忽略大小写 char buf[MAXN], s[MAXN];int原创 2019-01-30 13:45:05 · 173 阅读 · 0 评论 -
最长回文子串(2)
忽略字符串中的大小写和标点#include<stdio.h>#include<string.h>#include<ctype.h> #define MAXN 5000+10//测试数据:Confuciuss say:Madam,I'm Adam//忽略大小写 char buf[MAXN];//存储源字符串 char s[MAXN];//存储去除标...原创 2019-01-30 14:21:46 · 159 阅读 · 0 评论 -
双指针法的运用
//双指针法的运用//在有序数组中求出两个数和为10的数void TwoPointer(){ int num[8] = { 1, 2, 3, 4, 5, 6 ,7,8}; int i = 0, j = 7; while (i < j) { if (num[i] + num[j] == 8) { cou...转载 2019-03-27 18:44:43 · 128 阅读 · 0 评论