--2.4.C++
文章平均质量分 50
leoIsCoding
Github : [ https://github.com/leoChaoGlut ]
Email : [ leoIsCoding@163.com ]
展开
-
蓝桥杯:网络寻路
问题描述X 国的一个网络使用若干条线路连接若干个节点。节点间的通信是双向的。某重要数据包,为了安全起见,必须恰好被转发两次到达目的地。该包可能在任意一个节点产生,我们需要知道该网络中一共有多少种不同的转发路径。源地址和目标地址可以相同,但中间节点必须不同。如下图所示的网络。1 -> 2 -> 3 -> 1 是允许的1 -> 2 -> 1 -> 2 或者 1 -> 2原创 2015-05-02 00:18:22 · 1938 阅读 · 0 评论 -
整币兑零问题
Q:把一张n元的整币兑换成k种零币,m(1),m(2),.......m(k)(升序,单位:元),求不同的兑换种数.Thinking: 第一感觉,深搜,但是写出来之后发现,当n较大时,m(1)较小时,深搜的深度太深,思考过后发现,和背包问题有点类似,于是想到dp.input:10 31 2 5output:10Process:Input:原创 2015-03-28 09:55:16 · 1943 阅读 · 0 评论 -
蓝桥杯: 斐波那契
问题描述 斐波那契数列大家都非常熟悉。它的定义是: f(x) = 1 .... (x=1,2) f(x) = f(x-1) + f(x-2) .... (x>2) 对于给定的整数 n 和 m,我们希望求出: f(1) + f(2) + ... + f(n) 的值。但这个值可能非常大,所以我们把它对 f(m) 取模。 公式如下 但这个数字原创 2015-03-28 21:35:12 · 5921 阅读 · 0 评论 -
约瑟夫环问题
Q:n个人围成一圈,要存活的人数为p.按照顺时针依次编号1,2,3...,n.由第1个人开始顺时针报数,每报数为m的人就立刻自杀,然后再由下一个人重新报数.求:最后剩下的p个人的编号.输入顺序:n p minput:41 2 3output:16 31Thinking:容器选择:利用deque,vector,list都可以,这里我选择了deque.比较简单,直接原创 2015-03-29 10:40:30 · 1429 阅读 · 0 评论 -
蓝桥杯:标题:地宫取宝
标题:地宫取宝 X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。 当小明走到出口时,如果他手中的宝贝恰好原创 2015-02-05 19:09:20 · 1853 阅读 · 0 评论 -
高频率调用的函数一定要保证最优化,慎用除法和余数(转)
在近期优化系统的过程中,发现有个函数在高压力下,竟然占用13.3%的时间,这个函数内部很简单,基本就是这样:id_to_type(id){ int iIndex = id%150000; return g_data[iIndex].cType;}核心基本上就在这个%取余上,这往往使我们分组提高效率的常用方法,但是对于高频率调用上,转载 2015-02-02 12:08:52 · 2537 阅读 · 0 评论 -
The efficiency of swap
swap1:Each pair of expressions are separated by comma.swap2:Each pair of expressions are divided by semicolon.swap3:inline function.swap#include#include#define swap1(a,b) a^=b,b^=a,a^=b#defin原创 2015-02-05 22:29:41 · 1342 阅读 · 0 评论 -
蓝桥杯:Fibonacci数列
问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。输入格式输入包含一个整数n。输出格式输出一行,包含一个整数,表示Fn除以10007的余数.样例输入10样例输出55样例输入22原创 2015-02-06 19:01:08 · 1957 阅读 · 0 评论 -
蓝桥杯:十六进制转八进制
问题描述 给定n个十六进制正整数,输出它们对应的八进制数。输入格式 输入的第一行为一个正整数n (1 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式 输出n行,每行为输入对应的八进制正整数。注意 输入的十六进制数不会有前导0,比如012A。原创 2015-02-07 11:24:16 · 1547 阅读 · 0 评论 -
蓝桥杯:高精度加法
问题描述 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。 计算c = a + b的时候,首先将A[0]与B[0]相加,如果有原创 2015-02-08 15:57:22 · 2037 阅读 · 0 评论 -
蓝桥杯:阶乘计算
问题描述 输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。 将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。 首先将a设为1,然后乘2,乘3,当原创 2015-02-08 15:59:57 · 2075 阅读 · 0 评论 -
蓝桥杯:波动数列
问题描述 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3。 栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a或者减少b的整数数列可能有多少种呢?输入格式 输入的第一行包含四个整数 n s a b,含义如前面说述。输出格式 输出一行,包含一个整原创 2015-03-27 21:18:28 · 3290 阅读 · 1 评论 -
猴子爬山问题
问题:n级的台阶,每次可以跨一步,有m种跨法,求爬到第n阶台阶,共有多少种不同的爬法?例: 一个猴子在一座30级台阶的山上爬山,猴子上山一步可跳1级,或3级,试求上山的30级台阶有多少种不同爬法input:30 213output:58425input:50 42356output:106479771#includeus原创 2015-03-24 16:21:13 · 5057 阅读 · 0 评论 -
非空子集个数计算
题目:n个元素的集合{1,2,.....,n},可以划分为若干个非空子集,如,当n=4时,集合{1,2,3,4}可以划分为15个不同的非空子集如下:由4个子集组成:{{1},{2},{3},{4}}由3个子集组成:{{1,2},{3},{4}}{{1,3},{2},{4}}{{1,4},{2},{3}}{{2,3},{1},{4}}{{2,4},{1},{3}}原创 2015-03-24 13:51:26 · 11233 阅读 · 0 评论 -
蓝桥杯:兰顿蚂蚁
问题描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种。 平面上的正方形格子被填上黑色或白色。在其中一格正方形内有一只“蚂蚁”。 蚂蚁的头部朝向为:上下左右其中一方。 蚂蚁的移动规则十分简单: 若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格; 若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格。 规则虽原创 2015-05-05 23:56:10 · 1471 阅读 · 0 评论 -
蓝桥杯:最大子阵
问题描述 给定一个n*m的矩阵A,求A中的一个非空子矩阵,使这个子矩阵中的元素和最大。 其中,A的子矩阵指在A中行和列均连续的一块。输入格式 输入的第一行包含两个整数n, m,分别表示矩阵A的行数和列数。 接下来n行,每行m个整数,表示矩阵A。输出格式 输出一行,包含一个整数,表示A中最大的子矩阵中的元素和。样例输入3原创 2015-05-12 11:39:26 · 2363 阅读 · 2 评论 -
蓝桥杯:数字游戏
问题描述 栋栋正在和同学们玩一个数字游戏。 游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈。栋栋首先说出数字1。接下来,坐在栋栋左手边的同学要说下一个数字2。再下面的一个同学要从上一个同学说的数字往下数两个数说出来,也就是说4。下一个同学要往下数三个数,说7。依次类推。 为了使数字不至于太大,栋栋和同学们约定,当在心中数到 k-1 时,下一个数字从0开始数。例如原创 2015-05-13 16:50:44 · 2838 阅读 · 4 评论 -
蓝桥杯:第三十九级台阶
题目标题: 第39级台阶 小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢? 请你利用计算机的优势,帮助小明寻找答案。要求提交的原创 2015-04-06 22:23:14 · 3116 阅读 · 0 评论 -
蓝桥杯:勾股定理
勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形。 已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数。 求满足这个条件的不同直角三角形的个数。【数据格式】输入一个整数 n (0要求输出一个整数,表示满足条件的直角三角形个数。例如,输入:5程序应该输出:1再例如,输入:100程序应该输出:2再例如,输入:原创 2015-04-09 09:53:57 · 3501 阅读 · 2 评论 -
蓝桥杯:打印十字图
问题描述 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$.......$...$$.$$$.$$$$$.$$$.$$.$...$...$...$.$$.$.$$$.$.$$$.$.$$.$.$...$...$.$.$$.$原创 2015-04-22 20:13:19 · 1594 阅读 · 0 评论 -
最长递增子序列LIS递归算法
#includeusing namespace std;int minStep,n,*arr,*record,*lis,index,recordMax,lisCount;/* 1.minStep :存放"只"遍历一次指定数组,得到的LIS的长度.比如: *arr={4,5,1,2,3}; 遍历该数组过后,minStep=2,即为{4,5} 两个元素的长度.具体请看getMinSt原创 2015-03-16 11:13:53 · 3303 阅读 · 0 评论 -
最长公共子序列LCS递归解法
#include#includeusing namespace std;int row,col,**map,index,maxLen;char *record,*lcs;bool flag=true;string str1,str2;/* eg: str1="abcb",str2="acb" a b c b a 1原创 2015-03-17 13:51:19 · 3421 阅读 · 0 评论 -
组合数算法 C(n,m)(n>=m)
#includeusing namespace std;int a[]={1,2,3,4,5,6,7,8,9},b[10],n=9,m=5,counter=0;void output(){ for(int i=0;i<m;i++) cout<<b[i]<<" "; cout<<endl;}void dfs(int step,int index){ if(step==m)原创 2015-03-20 15:44:52 · 2681 阅读 · 0 评论 -
排列数算法A(n,m)(n>=m)
#includeusing namespace std;int source[]={1,2,3,4,5,6,7,8,9},n=9,m=3,record[10],visited[10],counter=0;void output(){ for(int i=0;i<m;i++) cout<<record[i]<<" "; cout<<endl;}void dfs(int step)原创 2015-03-20 16:20:43 · 2706 阅读 · 0 评论 -
N皇后问题
#includeusing namespace std;int n,sum=0,vertical[20],diagonal[20];bool diagonalJudge(int x,int y){ for(int k=1;k<x;k++) if(x-k==y-diagonal[k]||x+y==k+diagonal[k]) return false; return true;原创 2015-02-09 12:49:36 · 1366 阅读 · 0 评论 -
蓝桥杯:标题-带分数
标题:带分数 100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。 类似这样的带分数,100 有 11 种表示法。题目要求:从标准输入读入一个正整数N (N程序输出该数字用数码1~9不重复不遗漏地组成带原创 2015-01-10 10:48:02 · 1739 阅读 · 0 评论 -
疑问:关于swap和next_permutation
奇怪了,做全排列的时候,在交换两个数时用到algorithm中的swap函数,效率竟然比自己写一个swap的效率差,是因为大量进行调用的原因吗?求解....full_permutation 为我写的计算全排列数量的函数,没有使用algorithm中的swap函数,nextPerm 使用了algorithm中的next_permutation函数,full_permutation_原创 2015-01-23 11:18:14 · 1752 阅读 · 0 评论 -
分离表达式中的数字和运算符
#includeusing namespace std;void sort(char b[],int n[],char fh[],int &m){ int k,j; for(int i=0;i<strlen(b);i++) { if(b[i]=='+'||b[i]=='-'||b[i]=='*'||b[i]=='/'||b[i]==')') { k=1; j=i-1原创 2014-06-21 11:39:54 · 2686 阅读 · 0 评论 -
软件实习-算术表达式求值
#include#includeusing namespace std;class stack{public : int top,l1[50];//l1用于存放左括号下标(l代表left)。 char a[100];//a存放左括号,当找到匹配的右括号时,左括号就会pop()。 void pop(); void push(char b,int i); void match(st原创 2014-06-29 20:56:20 · 1571 阅读 · 0 评论 -
软件实习-倒排文档
/*5. 倒排文档[问题描述]倒排索引是搜索引擎中一个很基本的概念,几乎所有的搜索引擎都会使用到倒排索引。简单地说,倒排索引就是将文件中的单词作为关键字,然后建立单词与文件的映射关系,同时还需要记录文件中单词出现的频数等信息。 建立倒排索引的过程,需要对文件进行顺序的扫描,在这个过程中,我们一般还会统计一下词的分布情况,比如想知道频次排名第X的词(如果两个词的词频相同,则按照字母顺序排原创 2014-06-29 20:57:38 · 1712 阅读 · 0 评论 -
软件实习-学生管理系统
/*10.学生信息管理 [问题描述]编写一个程序实现学生基本信息的管理功能。[基本要求](1)每个学生的基本信息包括:学号,姓名,性别,出生日期,所属学院,专业,年级等,其中学号不允许重复。。(2)采用交互工作方式,输入N个学生的基本信息,N的值大于10。(3)建立数据文件,存入所输入的N个学生的信息,数据文件按关键字(学号)进行排序,排序方法可以自己选择。(4)可以对学生的基本信原创 2014-06-29 21:00:28 · 1912 阅读 · 1 评论 -
Joseph圆圈报数问题解法
#includevoid main(){ int n1,n,m,i,t,h=0,j=-1,a[100]={0}; cout<<"请输入小朋友个数n:"<<endl; cin>>n; cout<<"请输入报数值m:"<<endl; cin>>m; n1=n; for(i=1;i<=n;i++){//初始化数组a. a[i-1]=i; } while(1){ int cou原创 2014-05-20 15:51:58 · 1503 阅读 · 0 评论 -
猴子爬山(递归解决)
#include#includestatic long s=1,n[20]={2,3,5,6},m[1000]={0};void f(int max){ int i; for(i=0;i<4;i++) { m[max]+=m[max-n[i]]; if(max-n[i]==0) s++; else { if(max-n[i]>0) f(max-n[原创 2014-05-24 16:49:43 · 3618 阅读 · 0 评论 -
C++分解式
#includevoid main(){ int s=0,i,j=0,a[10]={0},b[10]={0},n,m=750; n=m; i=1; a[i]=2; while(1){ if(n%a[i]==0){ b[j++]=a[i]; n=n/a[i]; i++; a[i]=2; } else{ a[i]++; } if(a原创 2014-05-25 12:12:48 · 1645 阅读 · 0 评论 -
回溯法解决排列A(m,n)
#includevoid main(){ int i,a[10]={0},b[10]={1,2,3,4,5,6,7,8,9},g,m=3,n=6,j,s=0; i=1; a[i]=1; while(1){ g=1; for(j=0;j<i;j++){ if(a[j]==a[i]){ g=0; break; } } if(g&&i==m){原创 2014-05-26 15:44:16 · 1539 阅读 · 0 评论 -
螺旋打印数字矩阵
#includevoid main(){ int n,i=0,j=0,k=1,q=1; int a[50][50]={0}; cout<<"Input n<50"<<endl; cin>>n; while(1) { if(q==1) { while(1) { a[i][j++]=k++; if(j>=n||a[i][j]!=0) {原创 2014-05-29 19:03:37 · 1984 阅读 · 0 评论 -
蓝桥杯: 标题:神奇算式
标题:神奇算式 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。 比如: 210 x 6 = 1260 8 x 473 = 378427 x 81 = 2187 都符合要求。 如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。原创 2015-01-29 13:07:14 · 2042 阅读 · 1 评论 -
蓝桥杯:标题:猜字母
标题:猜字母 把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。 接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。 得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。#include#incl原创 2015-01-28 16:01:05 · 2885 阅读 · 0 评论 -
蓝桥杯:标题:翻硬币
题目标题:翻硬币 小明正在玩一个“翻硬币”的游戏。 桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。 比如,可能情形是:**oo***oooo 如果同时翻转左边的两个硬币,则变为:oooo***oooo 现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特原创 2015-01-19 16:43:14 · 1529 阅读 · 0 评论 -
进程调度算法
#include//main.cpp#include#include"process.h"#include"fcfs.h"#include"timeSlice.h"#include"priority.h"using namespace std;void pause(){ system("pause");getchar();system("cls");}int main(){原创 2015-01-10 22:28:55 · 1841 阅读 · 0 评论