11 2013 档案
摘要:Write a program to solve a Sudoku puzzle by filling the empty cells.Empty cells are indicated by the character '.'.You may assume that there will be only one unique solution.A sudoku puzzle......and its solution numbers marked in red.思考:参考这里。class Solution {public: // 返回第一个空白的位置,如果没找到就返回 (-1
阅读全文
摘要:Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.The Sudoku board could be partially filled, where empty cells are filled with the character '.'.A partially filled sudoku which is valid.思考:参考这里。class Solution {public: bool isValidSudoku(vector > &board) { vecto
阅读全文
摘要:Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.You may assume no duplicates in the array.Here are few examples.[1,3,5,6], 5 → 2 [1,3,5,6], 2 → 1 [1,3,5,6], 7 → 4[1,3,5,6], 0 → 0思考:二分搜索。class So
阅读全文
摘要:Evaluate the value of an arithmetic expression in Reverse Polish Notation.Valid operators are +, -, *, /. Each operand may be an integer or another expression.Some examples: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "
阅读全文
摘要:Suppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).You are given a target value to search. If found in the array return its index, otherwise return -1.You may assume no duplicate exists in the array.思考:二分搜索。class Solution {publi
阅读全文
摘要:Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring.For "(()", the longest valid parentheses substring is "()", which has length = 2.Another example is ")()())", where the lo
阅读全文
摘要:最近正在学习Nginx,对于我这样没有基础的来讲,真的是举步维艰。但是每每我都鼓励自己勇敢的去接受新知识,相信一分耕耘一分收获! 刚看到的一则新闻:From version 207 on, systemd will not apply the settings from /etc/sysctl.conf anymore: it will only apply those from /etc/sysctl.d/*.其实这对于我学习sysctl并无影响。因为/etc/下同时保留了sysctl.conf和sysctl.d。 /proc/sys目录下存放着大多数内核参数,并且可以在系统运行时进行更改.
阅读全文
摘要:之前都在虚拟机下面捣鼓Linux,有种隔靴搔痒的感觉。为了更快地熟悉Linux系统,重新安装了Ubuntu,首先就是配置vim。 下面是我的vim配置,为了方便,我在代码后添加注释说明。 1.配置C/C++风格编程方式。 sudo vi /etc/vim/vimrc,在末尾添加如下代码:""""""""""""""""文本格式和排版"""""""""
阅读全文
摘要:Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order).The replacement must be in-place, do not allocate extra memory.He
阅读全文
摘要:You are given a string, S, and a list of words, L, that are all of the same length. Find all starting indices of substring(s) in S that is a concatena...
阅读全文
摘要:Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.You may not alter the values in the nodes, only nodes itself may be changed.Only constant memory is all
阅读全文
摘要:Divide two integers without using multiplication, division and mod operator.思考:位运算。AC的时候真的想说一句“尼玛。。“,用unsigned int 超时,莫名其妙,折腾到半夜,百度一下改为long long过了。。我也不明白到底怎么回事,毕竟不是CS出身,哎。。太晚了,明天再看。VC不支持long long,珍爱生命,远离VC。class Solution {public: int divide(int dividend, int divisor) { // IMPORTANT: Please...
阅读全文
摘要:Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.Note: You can only move either down or right at any point in time.思考:DP方程:dp[i][j]=grid[i][j]+min(dp[i-1][j],dp[i][j-1])。class Solution {public: int...
阅读全文
摘要:Implement regular expression matching with support for '.' and '*'.'.' Matches any single character.'*' Matches zero or more of the preceding element.The matching should cover the entire input string (not partial).The function prototype should be:bool isMatch(const ch
阅读全文
摘要:Write a function to find the longest common prefix string amongst an array of strings.思考:依次比较字符串的第i个字符,不同退出循环。class Solution {public: string longes...
阅读全文
摘要:Givens1,s2,s3, find whethers3is formed by the interleaving ofs1ands2.For example,Given:s1="aabcc",s2="dbbca",Whens3="aadbbcbcac", return true.Whens3="aadbbbaccc", return false.class Solution {private: bool f[1000][1000];public: bool isInterleave(string s1, str
阅读全文
摘要:描述给出一初始序列a1, a2,...,an,下面有m个操作(x, l, r) : 对于a[l], a[l+1],...,a[r]都加上x. 输出m个操作结束后的序列. 输入第一行两个整数n,m(0 using namespace std;#define maxn 100001int g_count;int n;struct node{ int left; int right; int count;};struct node A[maxn*4];void buildtree(struct node *A,int index,int left,int right){ A[...
阅读全文
摘要:描述Keroro来侵略地球之前,曾跟Giroro伍长打赌:“我一个人灭掉整个地球给你看!”. 于是Keroro同学真的自己一个人来到地球开始他的侵略行动了。从K隆星出发之前,Keroro从Kururu曹长那儿拿了若干台左手武器{Li}和若干台右手武器{Ri},Keroro需要从{Li}里选一台左手武器,从{Ri}里选一台右手武器,用来组合成可用的恐怖武器。 左右手武器组合的规则很简单,假设从{Li}选出来攻击力为p的武器,从{Ri}选出来攻击力为q的武器,组合起来的攻击力就是p XOR q.Keroro想知道,他能组合成的最强武器攻击力为多少?Hint:必须左右手武器都选出来一个,才能组合成可
阅读全文
摘要:描述某段时间社会上流行企业收购,而南邮也受此社会风气影响,各个社团到处想着吞并其它社团,以实现扩张势力范围且梦想着统治南邮社团,于是,凶残的“社团吞并风波”就是这样开始了...已知每个社团有两个个属性:势力,标签。 势力代表一个社团的强大能力,任何一个社团只能吞并势力比它小的社团。标签代表该社团是属于什么类型的,一个社团可以有多个标签,如传媒科协有“技术类”,“艺术类”等标签,任意两个社团只有当他们有某一个相同的标签时才能发生吞并。下面C天每天有一次谈判(A,B),表示编号为A的社团和社团B谈判,谈判规则如下: (1)若A,B某一方满足把另一方吞并的所有条件,强大的一方s就会毫不犹豫地把弱的.
阅读全文
摘要:#include#include#include#includeusing namespace std;queueQ;stackS;int *p,n;int f(int a){ int i; int max=a; for(i=a;ip[max]) max=i; } return max;}int main(){// int n; cin>>n; p=new int [n]; int *mark=new int [n]; memset(mark,0,n*sizeof(mark[0])); int i; ...
阅读全文
摘要:描述从前从前,有一个容量为K的栈...容量为K的意思是指,如果该栈里已经有K个元素了,现在还要再压一个元素x进去,则原栈底部的元素就会消失,然后就有一个空余的空间来把x压进栈里面。 例如K = 3,原栈从底部到顶部的元素分别为1,2,3,现在要压4进去,则底部的1会消失,2往下掉变成底部元素,3也往下掉,最后4压进来。整个栈的元素自底向顶序列就变成2,3,4.so, 现在给该容器的容量K,和m个操作序列,操作分两种: push x 把x压入栈,x pop 栈顶元素出栈 对于每个操作,输出出栈的元素,若在操作前栈就已经为空,则输出"Empty!"(不包含引号).//如果不知道
阅读全文
摘要:描述(题名来源:2009年校队出战合肥现场赛曾用队名)PUMA是全球著名的运动品牌,PUMA的鞋与服饰在嘻哈涂鸦文化中受到全球各地年轻人的极度欢迎,同时PUMA与adidas更是1970与1980年代嘻哈文化的代表。PUMA公司是德国一家以生产鞋与运动服为主的大型跨国公司。该公司于1948年成立于德国荷索金米兰,PUMA中文作彪马,意为美洲狮,创始人为鲁道夫•达斯勒(Rudolf Dassler)。 鲁道夫•达斯勒于1924年加入了弟弟阿道夫•达斯勒(昵称阿迪Adi)位于赫若拉赫的达斯勒公司,并即将公司更名为达斯勒兄弟公司。1930年代中期,达斯勒兄弟公司成长为具有近百名员工、有三十余种款式的
阅读全文
摘要:描述河图,黑点白点排列奥秘数阵;洛书,纵横斜三条线上数和皆15。这是一个古老的数字游戏,将1~9填入一个九宫格,使得每行、每列、对角线上数字的和都相同(为15)。在西方,满足类似规律的矩阵称之为幻方。 一个n阶的幻方是一个n阶矩阵,在其中填入1~n2个正整数,使得每行每列及两条对角线上的数字和都相同。随着n的增大,幻方的解就越难求。但是,对于n为奇数的幻方,有一种独特的填数解法: 1、首先,将1填在第一行正中间; 2、依次填入2~n2,其中数字i+1填在数字i的右上角; 3、当数字i的右上角不可以填数字时,按如下方法分类讨论: a) 目标格超出幻方右边界,将数字填入该行最左侧的空格中; b)
阅读全文
摘要:描述如图所示,是一个数字搭成的三角形。若起始位置在三角形的顶端,结束位置在三角形底边,每一步只能向下方或向右下角移动一格。请编程计算一条路径,使得路径上经过的数字和最大。(图中路径7→3→8→7→5经过的数字和最大,为7+3+8+7+5=30)输入第一行包含一个正整数T (1≤T≤10),表示有T组测试用例。 每组用例有多行,第一行包含一个正整数N(2≤N≤100),接下来有n行,第i行包含i个自然数(不超过100),以空格分隔,表示数字三角形第i层。输出每组用例输出一行,仅包含一个整数,即所求路径上的数字和。样例输入1 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5样例输出3
阅读全文
摘要:描述在C++里,有一个神奇的东西,叫做STL,这里提供了很多简单好用的容器,用来实现常用又很难书写的数据结构,如栈(stack)等。其中,有一个容器叫set,译作“有序集合”。首先,这是一个集合,所以不存在相同的元素,其次,集合中的元素按从小到大排列。 现在,需要你把一列不符合“有序集合”要求的整数规范化,通过以下两个步骤: 1、去重:去掉重复的元素 2、排序:按从小到大顺序将元素排序 请问,最终得到的有序集合是怎样的呢? 输入第一行包含一个正整数T (1≤T≤100),表示有T组测试用例。 每组用例有两行,第一行包含一个正整数N(1≤N≤100),第二行有N个正整数,以空格分隔,表示未规范成
阅读全文
摘要:描述南邮ACM暑期集训队一年一度的选拔如火如荼的开始了。按照以往的惯例,通过ACM校赛预赛和决赛的两轮选拔,成绩优异者将入选集训队,获得下半年在各大赛区现场赛上与各路神牛角逐奖牌的机会。但是,校赛的竞争太过激烈,难免有些小神牛因为心态不稳,一不小心错失入选机会。于是,校队决定在校赛同期举行5场常规赛,作为选拔队员的第二渠道。常规赛以网络赛形式举办,每周一场,共5场。任何人可以参加任意多场。每场比赛结束后,由校队的组织者为参赛者评分。5场比赛结束后,校队组织者将统计每个参赛者的得分情况,取每人参赛场次中最好的一场成绩作为最终成绩来排名。现在,有一位小神牛参加了5场比赛中的n场,校队已给他的n场比
阅读全文
摘要:描述Problems in Computer Science are often classified as belonging to a certain class of problems (e.g., NP, Unsolvable, Recursive). In this problem you will be analyzing a property of an algorithm whose classification is not known for all possible inputs.Consider the following algorithm: 1. input n 2
阅读全文
摘要:#include#includeusing namespace std;int main(){// freopen("a.txt","r",stdin); int m,i,j,t,temp; string w[8]; char c[8]; int a[100]; cin>>m; while(m--) { int sum=0; for(i=1;i>w[i]>>c[i]>>a[i]; for(j=1;j50) t=11-(a[j]-50)/10; else t=11; ...
阅读全文
摘要:描述This is an easy problem.I think Fibonacci sequence is familiar to you.Now there is another one.Here a and b are constants.Gice you a,b,and n,your task is to calculate the f[n].输入First line of input comes a positive integer T(Tusing namespace std;int main(){ int m,a,b,n,t; int sum=0; cin>>...
阅读全文
摘要:描述求A^B的最后三位数表示的整数(1using namespace std;int main(){ int a,b; while(cin>>a>>b) { int t=a; if(b==1) cout<<a%1000<<endl; else { for(int i=1;i<b;i++) { t=a*t; t=t%1000; } cout<<t<<endl; } } return 0;}
阅读全文
摘要:描述计算机基础大赛推出了幸运奖(纯属虚构),给一个幸运数字l(0-340),从已按升序排好的n个人成绩中找出两位成绩之和刚好为幸运数字的选手,他们就是幸运奖的获得者。如果有多对,输出任意一对即可。 输入多组测试数据 每组第一行n,l 第二行输入n个成绩输出如果有,输出获得幸运奖那对儿选手的成绩。 没有输出NO。样例输入4 6 1 2 3 4 3 5 1 3 6样例输出2 4 NO#includeusing namespace std;int main(){ int n,*a,t; while(cin>>n>>t) { int f=0; a=(int...
阅读全文
摘要:描述计算机基础大赛结束后需要尽快对参赛选手的成绩进行处理,现在要求录入n个人的成绩,然后找出排名第k的选手的成绩。 输入输入数据包含多组样例,每组包含两行。 第一行输入n和k 第二行输入n个成绩输出对于每组样例,输出第k名的成绩。样例输入5 2 3 1 4 2 5样例输出4#include#includeusing namespace std;int main(){ int n,k,*a; while(cin>>n>>k) { a=(int*)malloc(n*sizeof(int)); for(int i=0;i>a[i]; sort(a,a+n); ...
阅读全文
摘要:描述事实上同学们是不会排成整齐的队伍的,现在就有n个人在摊位前围成一团,而且要是不能及时得到服务就会不高兴的。这可让XX有点犯难了,假如每个同学都把需要的服务时间写在脸上,同学 需要的服务时间为 。那么XX以怎样的顺序怎样才能让大家总的等待时间最短。求出最小等待时间。 输入输入数据包含多组样例,每组包含两行。 第一行为一个整数n 第二行为n个人所需时间(空格隔开)输出对于每组样例,输出最小等待时间。样例输入3 1 2 3 3 1 2 3样例输出10 10#include#includeusing namespace std;int main(){ int n,*a,m; a=(in...
阅读全文
摘要:描述计算机基础大赛需要在南二摆摊宣传。但是科协同学偷懒,现在只有XX一个人在摊位前,而同学们对参加这场比赛的热情很高,他们排了两条长队等待询问一些比赛细节,于是XX交叉着给两队同学服务,那么他的服务顺序是什么? 输入输入数据包含多组样例,每组样例一行,包含两个由空格隔开的字符串。输出对于每一组样例,输出交叉合并结果。样例输入ABCD 123456样例输出A1B2C3D456#include#define N 100int min(int x,int y){ return x>a>>b) { int len1,len2,i,j; len1=strlen(a); le...
阅读全文
摘要:描述如果一个自然数n能写写成若干个连续自然数之和,则称其为自然数n的一个“分拆”。如9=4+5,9=2+3+4,我们就说“4+5”与“2+3+4”是9的两个“分拆”。编程求出任意数n的所有“分拆”。输入输入数据包含多组样例,每组样例包含一个自然数n。输出对于每组样例,列出所有可能分拆(按字典序,每行一种可能分拆,行内个数字以空格隔开),没有则输出 none。样例输入9 2样例输出2 3 4 4 5 none#includeusing namespace std;void put(int a,int b){ int k; for(k=a;k>n) { int m,...
阅读全文
摘要:描述判断一个数是否为对称三位数素数。所谓“对称”是指一个数,倒过来还是该数。例如:375不是对称数,因为倒过来变成了573。输入输入数据包含多组样例(请一直处理到文件末尾,方法可参考提示),每组样例包含一个正整数n(0#includeusing namespace std;int dao(int n){ int t1=n/100; int t2=n%100/10; int t3=n-t1*100-t2*10; return t1+10*t2+100*t3;}int sushu(int n){ for(int i=2;i>n) { int m=dao(n...
阅读全文
摘要:描述 所有题目(Word、PDF格式):http://acm.njupt.edu.cn/acmhome/nuptacm/2013HW.zip在2013“华为杯”南京邮电大学大学生团体歌唱大赛组织工作中,为了营造比赛现场活跃气氛,大赛组委会决定为每位观众发放相同数目的OLED多彩荧光棒。现在我被委派批量采购荧光棒,大赛组委会特别要求:留1个荧光棒备用,其他所有的荧光棒都要平均发放给观众。已知目前市场上OLED多彩荧光棒只能按整包出售,每整包中的荧光棒数目相同。借此次“华为杯”南邮大学生程序设计竞赛的机会,请你帮我解决以下问题:已知观众数目、每整包中的OLED多彩荧光棒数目,我去采购,能否可能满足
阅读全文
摘要:描述 所有题目(Word、PDF格式):http://acm.njupt.edu.cn/acmhome/nuptacm/2013HW.zip2013“华为杯”南京邮电大学大学生团体歌唱大赛比赛形式为:大赛分为多轮,每一轮随机选择参赛团体进行两两PK赛。当根据多轮多场的PK赛成绩能够确定排名次序时,大赛结束。我们将问题进行简化,从1开始按递增顺序给每一个参赛团体分配一个整数编号,已知多场PK赛成绩,请你根据胜负关系确定两个给定参赛团体之间的成绩排名次序。举一个例子,参赛团体1在PK赛中胜参赛团体3,参赛团体2在PK赛中胜参赛团体1,则可知参赛团体2的成绩比参赛团体3的成绩排名高。输入输入包括多个
阅读全文
摘要:描述 所有题目(Word、PDF格式):http://acm.njupt.edu.cn/acmhome/nuptacm/2013HW.zip根据题目A的问题描述,我们知道2013“华为杯”南京邮电大学大学生团体歌唱大赛要求每个参赛团体由3名同一年级在校学生选手组成,各位同学踊跃报名,赛事组委会收到大量参赛团体信息,包括每一个团体选手姓名、学号、年级、联系方式等。因最近流感来袭,大赛组委会根据选手建议,决定将赛事推迟到秋季。该项决定带来的问题是:参赛团体的年级信息需要更新,其中已毕业离校参赛团队的信息需要删除。我们将问题进行简化,大学一年级至四年级的信息依次用0、1、2、3表示,硕士研究生一年级
阅读全文
摘要:描述 所有题目(Word、PDF格式):http://acm.njupt.edu.cn/acmhome/nuptacm/2013HW.zip2013“华为杯”南京邮电大学大学生团体歌唱大赛即将在南邮举行,本次大赛由南京邮电大学大学生就业与创业指导中心主办,南京邮电大学华为俱乐部(Huawei Club)和南京邮电大学学生职业发展协会(SCDA)联合承办,华为技术有限公司提供赞助。为了展示南邮学子风采,大赛组委会规定:每个参赛团体由3名同一年级在校本科生或硕士研究生选手组成,3名选手按照身高等差排列,例如参赛团体中3个选手身高依次为160厘米、170厘米、180厘米,则该团体报名成功。现在的问题
阅读全文
摘要:描述尽管已经在南邮住了四年,Lithium对学校的全貌却并不怎么了解。在即将毕业之际,为了能多留住一些对母校的印象,Lithium经常沿着环绕南邮的道路散步。有一天散步时他突然想到了一个问题——南邮的占地面积到底是多大?由于最近Lithium绕了南邮无数圈,他清楚的记得学校边界上的每一个顶点,但他不知道该怎么用这些数据算出学校的面积,现在请你帮助Lithium解决这个问题。输入输入数据的第一行是一个正整数N(3#include#includeusing namespace std;class coordinate {public: float x; float y;};int ma...
阅读全文
摘要:描述给定一个正整数N,请求出它所有约数的和。 比如,20有6个约数:1,2,4,5,10,20,所以,约数之和是1+2+4+5+10=42。 输入多组测试数据(不多于500000组),每组数据输入一行,一个正整数N(1≤N≤500000)。输入直至文件结尾。输出每组数据输出一行,一个正整数S:表示N的约数之和。样例输入1 2 4 8 16 样例输出1 3 7 15 31 #includeusing namespace std;const int Max_N=500000;int N,DS[Max_N+5];void Divisor_Sum(){ for(int i=1;i>N) {...
阅读全文
摘要:#include using namespace std;int main(){ int n; cin>>n; if(n>0&&n9&&n99&&n999&&n9999&&n99999&&n999999&&n9999999&&n<100000000) cout<<8*(n-9999999)+9+180+2700+36000+450000+5400000+63000000<<endl; else cout<<9
阅读全文
摘要:描述 EATER买来一堆好吃的,总共N+1份,共(N+1)/2种,每种准备了两份,同种都标上了相同的编号.本来准备与他家吃货一同分享,结果却发现被人偷吃了。。EATER发现总数少了一个,所以你的任务就是找出那一个是哪一种,告诉EATER,他就不吃那种,让给他妹子了。 输入 第一行一个奇数Nusing namespace std;int main(){ int n,a; while(scanf("%d",&n)!=EOF) { int result=0; while(n--) { scanf("%d",&a); ...
阅读全文
摘要:描述全排列就是n个不同元素排成一列,我们不妨可以简单地将n个元素理解为自然数1,2,…,n。现假设不同的全排列按照字典序自动从小到大排,123…n的序号为零。编程读入n、m,输出序号为m(mint main(){ char e[21]={0}; long s[21]={1},m,j,k,l; int i,n; scanf("%d%ld",&n,&m); m=m+1; s[0]=1; for(i=1;i=0;i--) { j=(m-1)/s[i]+1;l=0;k=0; do{ k++; ...
阅读全文
摘要:描述在一个nxn个方格组成的棋盘上的任一方格中放置一个皇后,该皇后可以控制他所在 的行,列以及对角线上的所有方格。对于给定的自然数n,在nxn个方格组成的棋盘上最少要放置多少个皇后才能控制棋盘上的所有方格,且放置的皇后互不攻击?设计一个拉斯维加斯算法,对于给定的自然数n (1£ n £100)计算在nxn个方格组成的棋盘上最少要放置多少个皇后才能控制棋盘上的所有方格,且放置的皇后互不攻击。输入输入的第一行有1个正整数n。输出输出计算出最少皇后数及最佳放置方案,第一行是最少皇后数;接下来的1行是皇后的最佳放置方案。样例输入8样例输出5 0 3 6 0 0 2 5 8 #inc
阅读全文
摘要:描述给定2 个n×n矩阵a 和b,试设计一个判定a 和b 是否互逆的蒙特卡罗算法,算法的计算时间应为O(n2)。设计一个蒙特卡罗算法,对于给定的矩阵a和b,判定其是否互逆。输入 输入的第一行有1个正整数n,表示矩阵a和b 为n×n矩阵。接下来的2n行,每行有n个实数,分别表示矩阵a和b 中的元素。输出矩阵a 和b 互逆则输出YES,否则输出NO。样例输入3 1 2 3 2 2 3 3 3 3-1 1 0 1 -2 1 0 1 -0.666667 样例输出YES#include#include#define N 20int main(){ //freopen("a.
阅读全文
摘要:描述在n×n 格的棋盘上放置彼此不受攻击的n 个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n×n格的棋盘上放置n个皇后,任何2 个皇后不放在同一行或同一列或同一斜线上。设计一个解n 后问题的队列式分支限界法,计算在n´ n个方格上放置彼此不受攻击的n个皇后的一个放置方案。输入 第一行有1 个正整数n。输出 将计算出的彼此不受攻击的n个皇后的一个放置方案输出。第1行是n个皇后的放置方案。样例输入5样例输出1 3 5 2 4#includeusing namespace std;bool place(int k,i
阅读全文
摘要:描述设有n种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组Coins[1:n]中。对任意钱数0≤m≤20001,设计一个用最少硬币找钱m的方法。对于给定的1≤n≤10,硬币面值数组T和可以使用的各种面值的硬币个数数组Coins,以及钱数m,0≤m≤20001,编程计算找钱m的最少硬币数。输入输入的第一行中只有1个整数给出n的值,第2行起每行2个数,分别是T[j]和Coins[j]。最后1 行是要找的钱数m。输出输出计算的最少硬币数,问题无解时输出-1。样例输入3 1 3 2 3 5 3 18 样例输出5#includeusi
阅读全文
摘要:描述大于1 的正整数n可以分解为:n=x1*x2*…*xm。 例如,当n=12 时,共有8 种不同的分解式: 12=12; 12=6*2; 12=4*3; 12=3*4; 12=3*2*2; 12=2*6; 12=2*3*2; 12=2*2*3。 对于给定的正整数n,编程计算n共有多少种不同的分解式。 输入输入的第一行有1个正整数n (1≤n≤2000000000)。输出输出计算出的不同的分解式数。样例输入12样例输出8#include#include#includeusing namespace std;int main(){ int n,a[10000],dp[10000]; ...
阅读全文
摘要:描述一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2,…,9。给定表示书的总页码的10 进制整数n (1≤n≤109) 。编程计算书的全部页码中分别用到多少次数字0,1,2,…,9。输入输入只有1 行,给出表示书的总页码的整数n。输出输出共有10行,在第k行输出页码中用到数字k-1 的次数,k=1,2,…,10。样例输入11样例输出1 4 1 1 1 1 1 1 1 1 #include #in
阅读全文
摘要:描述给定一个点分十进制的IP地址,把这个IP地址转换为二进制形式。 输入输入只有一行,一个点分十进制的IP地址 包括四个正整数,用三个.分开,形式为a.b.c.d其中0#includeusing namespace std;int a[8]={0};void TenToTwo(int n){ int i=0,j; if(n==0) { cout=0;j--) cout>s; int len=s.length(); int i; int temp=0; for(i=0;i<len;i++) { if(s[i...
阅读全文
摘要:描述高斯是德国著名数学家、物理学家、天文学家、几何学家,有“数学王子”的美誉。18岁的高斯发现了质数分布定理和最小二乘法。通过对足够多的测量数据的处理后,可以得到一个新的、概率性质的测量结果。在这些基础之上,高斯随后专注于曲面与曲线的计算,并成功得到高斯钟形曲线(正态分布曲线)。其函数被命名为标准正态分布(或高斯分布),并在概率计算中大量使用。在高斯19岁时,仅用尺规便构造出了17边形。并为流传了2000年的欧氏几何提供了自古希腊时代以来的第一次重要补充。高斯总结了复数的应用,并且严格证明了每一个n阶的代数方程必有n个实数或者复数解。在他的第一本著名的著作《算术研究》中,作出了二次互反律的证明
阅读全文
摘要:描述“丑陋数”是指那些质因子只包含2,3或5的数(可以都不包含,所以1也是一个“丑陋数”)。数列1,2,3,4,5,6,8,9,10,12,...给出了前十个“丑陋数”。 给出正整数n,请输出第n个“丑陋数”。 输入每行仅有一个正整数n(n#includeusing namespace std;int max(int a,int b){ return a>=b?(a):(b);}int min(int a,int b){ return a A,B,C,S;int main(){ int i,temp,n; i=1; S.push_back(1); int r...
阅读全文
摘要:描述每一个数字都有自己的实力,我们可以从不同的角度来描述数字的实力。我们做出如下定义:一个数字n的实力是它所拥有的因数个数。例如:6的实力是4 ,因为它有4个因数(1,2,3,6)。 现在我们需要知道从1开始到某一个数n中,哪个数字拥有最强的实力。 输入一个正整数n ( 0using namespace std;#define MAX 500000int prime[MAX];bool a[MAX];int cnt;void Initprime()//?????????{ int i, j; cnt = 0; for( i=2; i>n; max=1;t=1; ...
阅读全文
摘要:描述一位秘书在距离家以东n个街区,以北m个街区的一座大楼里工作。每天他要步行5个街区上班。(右图为n=3,m=2时的情形)。对于他来说可能有多少种不同的上班路线f(n,m)(上班是件敢时间的事情,他的行进速度保持不变,他需要尽可能早到达公司)输入输入包括一行,两个正整数n,m ( 0 #includeint qkpass(int *r,int left,int right){ int i,j, x=r[left]; i=left; j=right; while(i=x) j--; if(i<j) { ...
阅读全文
摘要:描述设有n个活动的集合E={1,2,……,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si=fj或者sj>=fi时,活动i与活动j相容。活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合。 但在现实生活中,不同的活动所带来的价值和意义是不一样的,所以我们可以为每个活动附上一个权值,现在的问题就是要在所给的活动集合中选出权值和最大的相容活动子集合。 输入第一行输入一个正整数n(1#includeusing namespace std;inline int maxx
阅读全文
摘要:描述给出N个整数X1,X2,X3,……,XN,将这N个数从小到大排序为A1,A2,A3,……,AN,记数列A1,A2,A3,……,AN的奇数项之和为P,偶数项之和为Q,令T=|P-Q|,求出T的值。 输入 第一行为整数N(1#include using namespace std;int main(){ int num,temp,i; int Q=0,T=0;// int a; scanf("%d",&num); priority_queue pq; for(i=0;i0) cout<<p<<endl; else cout<...
阅读全文
摘要:描述 飞弹能够沿固定方向摧毁高度递减的目标。现在已知一直线上从左到右各个目标的高度。需要你求出飞弹最多能够摧毁多少目标。飞弹自最左端发射,起始高度任意,从左至右摧毁目标。 输入第一行是一个正整数n(1using namespace std;int main(){ int n,*a,*count,i,j,max; cin>>n; a=new int[n]; count=new int[n]; for(i=0;i>a[i]; count[i]=1; } for(i=n-1;i>=0;i--) { max=0; ...
阅读全文
摘要:描述A城是由许多小城镇组成的,在A城的各个小城镇间建了许多道路(道路是双向的)。这些道路是A城便利交通的基础。游客通过这些道路可以在任意两个城镇之间往返。最近市长对这座城市错综复杂的交通感到厌烦,决定重新规划A城的道路。所以他派给你一个任务:留下尽可能少的道路,保证任意两个城镇之间还是可达的。将其他多余的道路全部拆除。 输入第一行为两个正整数n(1using namespace std;#define MAXT 1001#define MAXK 31inline int max(int a,int b){ return a>b?a:b;}int main(){ int t,k,i,...
阅读全文
摘要:描述一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢? 输入输入数据有若干组,每组数据包含二个整数a,b(0using namespace std;int main(){ int a,b,c[100]; int i=0,j,k; while(cin>>a>>b&&(a!=0&&b!=0)) { for(j=0;j1) { for(k=0;k=10) cout<<c[k]<<" "; else cout<<"0"<<c
阅读全文
摘要:描述给出一个长度为n的序列A1,A2,…,An,求最大的连续和。要求找到1≤i≤j ≤n,使得Ai+Ai+1+…+Aj尽量大。 输入第1行输入一个正整数n(n≤1000),此后输入n行,每行给出一个测试用例,包含正整数m和m个整数,以空格分隔各个数。输出输出n行。对于每一个测试用例,在一行输出最大的连续和。样例输入2 3 1 -1 3 3 1 2 3样例输出3 6 #includeint a[1001],s[1001];int main(){ int t,n,i,max,min; scanf("%d",&t); while(t--) { scanf("%d
阅读全文
摘要:描述端午节到来,sed投资建设的仙林鼎山游乐园开业了。整个园区拥有许多游乐场,有多个入口和多个出口,游乐场之间铺设小路相连。端午节来游乐园的人实在太多,sed发布规定:游乐场之间的小路为单行道。但游乐场太多,工作人员常常将指示方向的标志牌放错方向,导致游客在游乐园又回到游览过的地方。请sed解决这个问题,按照现有的标志牌指示的方向,判断游客在一次行程中是否有可能回到游览过的地方。输入第一行是一个正整数:测试用例数目,最多为100。之后,每个测试用例包括:l 第1行给出两个整数n、e,2≤n≤50,1≤e≤1225,n表示游乐场的数目,游乐场分别用,e表示所有游乐场之间路径数。l e行,每1行给
阅读全文
摘要:描述知道斐波那契数吗?下面是它的一个定义:F1 = 1F2 = 2Fn+1 = Fn+Fn-1 ,这里n>1每个正整数x 可写为不同斐波那契数的总和,因而意味着存在数k 和数 b1, b2, ..., bk,使得x=b1*F1+...+bi*Fi+ ... +bk*Fk, 其中bk = 1,bi (1≤i 1,bi * bi-1 = 0。利用斐波那契数,我们可以将公里单位距离 x 转换为相应的英里单位距离 y,首先,以斐波那契系统表示b(x)写下x。其次,将b(x)中数字右移一位(最后一位删除),得到b(y)。第三,从b(y)中计算总数来算出 y。例如,数42以斐波那契系统表示为:(1,
阅读全文
摘要:描述输入正整数n,把整数1,2,3,…,n组成一个环,使得相邻两个整数之和为素数。输出时从整数1开始逆时针排列。同一个环应恰好输出一次。1using namespace std;const int PRIME[] = {0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1};int isPrime(int a){ return PRIM...
阅读全文
摘要:描述全排列的生成就是对于给定的字符集或数集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来。对给定的字符集中的字符规定一个先后关系,在此基础上规定两个全排列的先后是从左到右逐个比较对应的字符的先后,或根据给定的数集中的大小关系,规定两个全排列的先后是从左到右逐个比较对应的数的大小,即依照字典序给出全排列。例如字符集{1,2,3},较小的数字较先,这样按字典序生成的全排列是: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 给定n个整数,现请编程求它们所有的全排列。 输入输入包括两个行,第一行给出正整数n( 0 #include #define N 8using n
阅读全文
摘要:描述输入一个n×n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数。如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块。如下图所示的图形有3个八连块。输入第1行输入一个正整数n(n≤700),此后输入n行,每行是由n个0或1组成的字符串。 输出在输入黑白图像中,八连块的个数样例输入6 100100 001010 000000 110000 111000 010100样例输出3 #include#include#include#include#define PI 4.0*atan(1.0)#define MAX_32_INT#define MAX_64_INT
阅读全文
摘要:描述Trees are fundamental in many branches of computer science. Current state-of-the art parallel computers such as Thinking Machines' CM-5 are based on fat trees. Quad- and octal-trees are fundamental to many algorithms in computer graphics. This problem involves building and traversing binary tr
阅读全文
摘要:描述你有一些小球,从左到右依次编号为1,2,3,…,n,如下图所示:你可以执行两种指令。其中A X Y表示把小球X移动到小球Y左边,B X Y表示把小球X移动到小球Y右边。指令保证合法,即X不等于Y。 例如,在初始状态下执行A 1 4后,小球1被移动到小球4的左边,如下图所示: 如果再执行B 3 5,结点3将会移到5的右边,如下图所示:输入输入小球个数n。指令条数m和m条指令,注意,1≤n≤500000,0≤m≤100000。输出从左到右输出最后的小球序列。 样例输入6 2 A 1 4 B 3 5样例输出2 1 4 5 3 6 #include#define maxn 500100int l[
阅读全文
摘要:描述 输入非负整数n和m,求组合数 ,其中m≤n≤20 输入输入非负整数n和m,以空格分隔。输出输出组合数。样例输入5 2样例输出10 #include using namespace std;long double zuhe(int n,int m){ long double t=1,s=1; for(int i=1;in-m;j--) s=s*j; return s/t;}int main(){ int n,m; cin>>n>>m; if(m==0) cout<<"1"<<endl; else cout<<z
阅读全文
摘要:描述记得上小学奥数时,JacmY最喜欢做的题就是给一个图形,从它某一个顶点出发描这个图形,若恰通过图中每条边一次,看最后能否又回到起点。当时JacmY只懂得拿着铅笔随便画画试试,如果成功了,就说这个图能画下来,而他判断不能画下来的标准就是费了半天功夫都画不出来,当然这么做是不对的,特别当图形变得复杂时,JacmY是试不过来的。看着可怜的JacmY,你能帮帮他吗? 输入第一行一个整数T代表样例的组数。以下T组数据中,每组第一行是N,K,(2 using namespace std;int main(){ int test; int n,k,i,x,y; cin>>test; ...
阅读全文
摘要:描述在n×n方阵里填入1,2,…, n×n,要求填成蛇形(见样例)。 输入输入正整数n,n≤64。输出输出蛇形矩阵,要求每个数格式宽度为5、右对齐。样例输入4样例输出10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4#include #include #include #include #define MAXN 65 using namespace std;int a[MAXN][MAXN]; int main() { int n, x, y, val=0; cin>>n; memset(a,0,sizeof(a));...
阅读全文
摘要:描述This problem is based on the game of Black Vienna. In this version there are three players and 18 cards labeled A-R. Three of the cards are set aside (hidden) and form the "Black Vienna" gang. The remaining cards are shuffled and dealt to the players so that each player has 5 cards. Play
阅读全文
摘要:描述Rock, Paper, Scissors is a classic hand game for two people. Each participant holds out either a fist (rock), open hand (paper), or two-finger V (scissors). If both players show the same gesture, they try again. They continue until there are two different gestures. The winner is then determined ac
阅读全文
摘要:描述The company Al's Chocolate Mangos has a web site where visitors can guess how many chocolate covered mangos are in a virtual jar. Visitors type in a guess between 1 and 99 and then click on a "Submit" button. Unfortunately, the response time from the server is often long, and visitor
阅读全文
摘要:描述In the book All Creatures of Mythology, gnomes are kind, bearded creatures, while goblins tend to be bossy and simple-minded. The goblins like to harass the gnomes by making them line up in groups of three, ordered by the length of their beards. The gnomes, being of different physical heights, var
阅读全文
摘要:描述现在我们来玩一个游戏:传播“悄悄话”,规则如下:(1)一个人发起“悄悄话”(2)一个人在知道“悄悄话”时,要么保持沉默,不告诉任何人;要么在规定时间内将“悄悄话”及时告诉其他两个人,否则游戏失败。(3)所有人最终都知道“悄悄话”假设一个人在规定时间内至多将“悄悄话”告诉两个人;除发起人外,其他每个人只被告诉一次“悄悄话”。给定游戏的统计数据,请你判断游戏是否成功。输入第一行是一个正整数:测试用例数目,最多为3。之后,每个测试用例包括多行:l 第1行给出两个整数(空格分割),前者表示游戏参与人数n,后者表示“悄悄话”的发起人t,在这个游戏中,参加人用整数序号表示,2≤n≤10001,0≤t≤
阅读全文
摘要:描述给定任何不可被2或者5整除的整数n(0 int main(){ int n; while(scanf("%d",&n)!=EOF) { int t=1; int count=1; while(t) { t=(t*10+1)%n; count++; } printf("%d\n",count); } return 0;}
阅读全文
摘要:描述sed同学最近迷上了制造机器狗,购置了大量所需零件,零件可以组装为一个组件,这些组件或零件又可以组装为一个大的组件。在制造机器狗中,组件或零件只能两两进行组装,组装的顺序任意。在机器狗中,每个零件都有一个组装成本,每次组装一个组件的费用为各个零件组装成本之和。给定各个零件组装成本(单位为元),你的任务是帮助sed计算他至少花费多少费用。输入第一行包括一个整数N,表示机器狗零件数(1≤N≤10000)第二行为N个正整数,表示每个机器狗零件组装成本(单位为元),整数之间用空格隔开。输出输出仅一行,即机器狗组装的最少费用。注意:输出部分的结尾要求包含一个多余的空行。样例输入10 1 2 3 4
阅读全文
摘要:描述现代社会通信便捷,借助于Internet形成了各式各样的社区,每个人都可能属于多个社交圈,尤其是Facebook类社交网站的出现,使世界缩小了,人与人的交往扩大了频繁了。sed同学正在做这方面的毕业设计课题,指导老师给他布置了一个任务:已知一群人的社会关系网络,判断两个人之间的关系,他们是否可以通过社交圈的人相互结识。输入第一行包括三个整数:n、 m、k,分别表示人数、社区数、查询两个人之间的关系的用例数 (1 ≤ n ≤ 10000, 0 ≤ m ≤ 100,1 ≤ k ≤ 100)。m行,每行首先给出一个社区的人数,然后给出代表人的序号。k行,每行给出待查询的两个人(用序号表示)。输出
阅读全文
摘要:描述很少有人知道奶牛爱吃苹果。农夫约翰的农场上有两棵苹果树(编号为1和2), 每一棵树上都长满了苹果。奶牛贝茜无法摘下树上的苹果,所以她只能等待苹果 从树上落下。但是,由于苹果掉到地上会摔烂,贝茜必须在半空中接住苹果(没有人爱吃摔烂的苹果)。贝茜吃东西很快,她接到苹果后仅用几秒钟就能吃完。每一分钟,两棵苹果树其中的一棵会掉落一个苹果。贝茜已经过了足够的训练, 只要站在树下就一定能接住这棵树上掉落的苹果。同时,贝茜能够在两棵树之间 快速移动(移动时间远少于1分钟),因此当苹果掉落时,她必定站在两棵树其中的一棵下面。此外,奶牛不愿意不停地往返于两棵树之间,因此会错过一些苹果。苹果每分钟掉落一个,共
阅读全文
摘要:描述换寝室是大家都不愿意碰到的事情,不幸的是,可怜的wwm高中大学都遇到了。 室友们有一个不成文的规定,那就是根据自己的学号选择床号。如果某同学的学号是a,并且有0..k-1一共k张床,那么他就会选择a%k号床作为他睡觉的地点。显然,两个人不能睡在一张床上。那么给出所有同学的学号,请你为他们准备一间卧室,使得里面的床的数量最少。 输入第一行是同学的个数n(1#include #include #include using namespace std;const int S = 1000001;const int N = 5001;char *bed = NULL;int main(){ ...
阅读全文
摘要:描述 很多学生都会找点兼职来赚点外快,Alfred也不例外,他找的兼职是家教。好了,现在Alfred的工作就是辅导一个高中生的数学。 这一天,这位高中生叫Alfred帮忙做一下作业:在二维平面内给出一个三角形的三个顶点坐标,现在的任务是求出这个三角形的垂心,也就是三角形的三条高线所在直线的交点。 当然,Alfred的数学是不错的,对于这么简单的问题,Alfred只用了半分钟就解决掉了,正当Alfred得意的时候,这位高中生却毫不吃惊地说:我们的作业一共有100条呢! Alfred听见了之后不禁倒抽了一口凉气,现在的中学生真命苦啊。 所以,打抱不平的Alfred决定要帮这位高中生的忙:利用计算机
阅读全文
摘要:描述给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中堆排序算法进行排序,并输出排序最后结果的相应序列。输入共两行,第一行给出排序元素数目n,第二行给出n个元素,1≤n≤100000,每个元素值范围为 [0,100000)输出一行,输出排序结果。样例输入7 48 36 68 72 12 48 2样例输出2 12 36 48 48 68 72#include #define N 100000using namespace std;void swap(int &x,int &y){ int z; z=x; x=y; y=z;}void adjustdown(...
阅读全文
摘要:描述给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中直接插入排序算法进行排序,并输出排序过程中每趟及最后结果的相应序列。输入共两行,第一行给出排序元素数目n,第二行给出n个元素,1≤n≤400,每个元素值范围为 [0,100000)输出三个部分:第1部分为两行,第1行输出文字“Source:”,第2行给出原始序列;第2部分,开始输出文字“Insert Sort:”,后续输出简单选择排序过程;第3部分,开始输出文字“Result:”,后续输出排序结果。样例输入7 48 36 68 72 12 48 2样例输出Source: (48) 36 68 72 12 48 2 Inser
阅读全文
摘要:描述给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中的简单选择排序算法进行排序,并输出排序过程中每趟及最后结果的相应序列。输入共两行,第一行给出排序元素数目n,第二行给出n个元素,1≤n≤400,每个元素值范围为 [0,100000)输出三个部分第1部分为两行,第1行输出文字“Source:”,第2行给出原始序列;第2部分,开始输出文字“Select Sort:”,后续输出简单选择排序过程;第3部分,开始输出文字“Result:”,后续输出排序结果。样例输入7 48 36 68 72 12 48 2样例输出Source: (48 36 68 72 12 48 2) Selec
阅读全文
摘要:描述给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中两路合并排序算法进行排序,并输出排序最后结果的相应序列。输入共两行,第一行给出排序元素数目n,第二行给出n个元素,1≤n≤100000,每个元素值范围为 [0,100000)输出一行,输出排序结果。样例输入7 48 36 68 72 12 48 2样例输出2 12 36 48 48 68 72#include #define N 100000using namespace std;void merge(int a[],int i1,int j1,int i2,int j2){ int *temp=new int[j2-...
阅读全文
摘要:描述给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中快速排序算法进行排序,并输出排序最后结果的相应序列。输入共两行,第一行给出排序元素数目n,第二行给出n个元素,1≤n≤100000,每个元素值范围为 [0,100000)输出一行,输出排序结果。样例输入7 48 36 68 72 12 48 2样例输出2 12 36 48 48 68 72#include#includeint qkpass(int *r,int left,int right){ int i,j, x=r[left]; i=left; j=right; while(i=x) ...
阅读全文
摘要:描述给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中冒泡排序算法进行排序,并输出排序过程中每趟及最后结果的相应序列。输入共两行,第一行给出排序元素数目n,第二行给出n个元素,1≤n≤400,每个元素值范围为 [0,100000)输出三个部分第1部分为两行,第1行输出文字“Source:”,第2行给出原始序列;第2部分,开始输出文字“Bubble Sort:”,后续输出简单选择排序过程;第3部分,开始输出文字“Result”,后续输出排序结果。样例输入7 48 36 68 72 12 48 2样例输出Source: (48 36 68 72 12 48 2) Bubble So
阅读全文
摘要:描述Tom和Jerry在10*10的方格中:*...*...........*......*...*...............*.C....*.....*......*........M......*...*.*.....*.*......C=Tom(猫) M=Jerry(老鼠) *=障碍物 .=空地他们各自每秒中走一格,如果在某一秒末他们在同一格中,我们称他们“相遇”。注意,“对穿”是不算相遇的。 他们移动方式相同:平时沿直线走,下一步如果会走到障碍物上去或者出界,就用1秒的时间做一个右转90度。一开始他们都面向北方。 编程计算多少秒以后他们相遇。输入10行,格式如上输出相遇时间T。如果
阅读全文
摘要:描述每学期考试结束,教务处老师都要对学生成绩进行一些统计。请你帮助教务处老师对学生成绩从高到低进行排名。成绩相同,排名序号相同,先后出现顺序与原始次序相同。输入第一行是一个正整数:测试用例数目,最多为100。之后,每个测试用例包括:l 第1行,含一个整数n:1≤n≤100,表示学生数l n行,每一行含一个字符串(长度不超过10)、一个整数,分别表示学生的学号、成绩输出对于每个测试用例:l 输出“Case #:”,#表示序号l 输出n行,每一行含排名序号、学生学号、成绩注意:输出部分的结尾要求包含一个多余的空行。样例输入2 5 B05021924 90 B07030901 91 B0703041
阅读全文
摘要:描述在个位数中:0,4,6,8,9有一个共同的特征:数形上存在空洞,其中8有两个相切的空洞。一个非负整数具有多个空洞,给定一个空洞数目h(0 ≤ h ≤ 510),请你写一个计算机程序来找出能产生这些空洞的数,要求数应尽可能小,且无前导零。输入一行输入一个非负整数h,表示空洞的数目。输出能产生这些空洞的最小数。注意:输出部分的结尾要求包含一个多余的空行。样例输入0 1 15 70样例输出1 0 48888888 88888888888888888888888888888888888#includeusing namespace std;int main(){ int n,i; wh...
阅读全文
摘要:描述好消息!南邮规划建设自行车停放场,现已选定多个场地,它们均为规则多边形。现请你帮助学校确定哪块场地面积最大,这里以鼎山之顶为平面坐标原点,按顺时针或逆时针给出顶点坐标。输入输入数据中含有一些多边形场地(1≤数量≤20),按输入顺序编号(从1开始)。每个多边形场地的第一行数据n(3≤n≤10),后续n行分别给出顶点的平面坐标(平面两个坐标的绝对值≤50)。输出输出面积最大的多边形场地序号。当面积最大的多边形场地有多个时,输出这些场地中的最小序号样例输入2 3 0 0 0 1 1 0 4 0 0 0 1 11 1 0样例输出2#include#includeusing namespace st
阅读全文
摘要:描述 今天是JacmY生日,他请大家吃饭,就这样,一行N个人来到了餐馆,大家吃吃喝喝,有说有笑,气氛甚欢,这时突然有人提议大家玩一个游戏,听罢规则后,就开始了游戏。 游戏规则是这样的,吃饭的N个人围坐在桌子旁,JacmY是1号,沿着顺时针方向开始编号,2、3……N,然后由JacmY随机说一个数K(1 int main(){ int n,t,i,k; scanf("%d",&t); for(int ii=0;ii<t;ii++) { scanf("%d",&n); int j=0,count=0,s=0; int a...
阅读全文
摘要:描述话说南京的城市规划一般一般,各个大学分布极不合理,难于沟通。 我们夜猫族打算用一种常人难以想象的方式建立大学通道:用地道使得所有大学都相通。 但地道的造价不菲,而大学生是贫困群体,所以我们希望用尽量小的代价。 已知建设一条地道的费用和地道的距离成正比。其关系是,一个单位的距离需要的花费是7个ACM币,在ACM世界里货币的换算方法简单极了,29个ACM币等于一个DS币,17个DS币等于一个算法币。(ACM币单位为ac,DS币单位为ds,算法币单位为al) 但是学校太多了,而且有些学校不能直接连接(比如,跨湖或跨江地道太难建设了)。需要聪明的你的帮助。 输入第一行包含两个整数N,M。N表示学校
阅读全文
摘要:描述有这样一个游戏:从一个正整数开始,两人轮流进行如下运算: 若是奇数,就把这个数乘以3再加1;若是偶数,就把这个数除以2。这样演算下去,直到第一次得到1才算结束,首先得到1的获胜。 比如,要是从1开始,就可以得到1→4→2→1;要是从17开始,则可以得到17→52→26→13→40→20→10→5→16→8→4→2→1。 这个问题就是叙拉古猜想,也叫科拉兹猜想或角谷猜想。 现在,你和你的朋友一起玩这个游戏,由你先开始,请问谁获胜? 输入第一行N(Nusing namespace std;int main(){ int test; cin>>test; while(test-...
阅读全文
摘要:描述回文是一种有趣的现象。英语中单词Palindromes指顺读倒读都一样的词语,比如radar,reviver,repaper,deified,rotator。美国南卡罗来那州查尔斯顿市北部有一片沼泽地,其名字的拼法也采用了这一形式:Wassamassaw,印第安语的意思是“世界上最恶劣的地方。 现在给定一个单词,要求你判断这个单词是不是回文词。 输入输入数据由若干行组成,每行一个单词(长度为[1,256]),仅由字母组成,没有前导或后置的非法字符,单词后紧跟换行回车符。 输出对于一个单词,如果是回文词,输出“Bingle! Palindrome.”,否则,输出“Not Palindrome
阅读全文
摘要:描述 为了丰富校园网络生活,学校 BBS 举行了一次水王争霸赛。比赛开始后,选手们疯狂灌水,都想争取到水王这个荣誉称号。但学校的 BBS 是如此的不堪一击,才 1e-3 秒就超负荷了。 现在需要把选手们灌的水集合起来,降低服务器负荷。 事情是这样得到处理的: 假设每个选手每次灌水量为1L,每灌一次水,服务器就用一个容量为无限的虚拟容器收集这1L水。 最后服务器中有N个容器收集了水。而服务器最多能负载K个装了水的容器。但是,服务器只有一种自救措施:就是把两个装了同样多水的容器合并到这两个容易中的其中一个,另一个空了的直接free它。 然而不能排除这种情况的存在:通过自救方式,仅由选手们灌...
阅读全文
摘要:描述在一些美国主要城市里,为企业传送文件和小物品的自行车快递长期以来就是流动运输服务的一部分。波士顿的骑车人是不同寻常的一族。他们以超速、不遵守单行道和红绿灯、无视汽车、出租、公交和行人的存在而臭名远扬。快递服务竞争激烈。比利快递服务公司(BBMs)也不例外。为发展业务,制定合理的收费,BBMS正根据快递员能走的最短路线制定一项快递收费标准。而你则要替BBMS编写一个程序来确定这些路线的长度。以下假设可以帮助你简化工作:●快递员可以在地面上除建筑物内部以外的任何地方骑车。●地形不规则的建筑物可以认为是若干矩形的合并。并规定,任何相交矩形拥有共同内部,而且是同一建筑物的一部分。●尽管两个不同的建
阅读全文
摘要:描述给定一个正整数,求其各位之和。 输入输入一行,为一个正整数(最多10,000位)。 输出输出各位之和。样例输入17样例输出8#include #include #define N 10000using namespace std;int main(){ string a; int sum=0,len; cin>>a; len=a.size(); for(int i=len-1;i>=0;i--) sum+=(a[i]-'0'); cout<<sum<<endl; return 0;}
阅读全文
摘要:描述设有n个城市,编号为0~n-1,m条单向航线的起点和终点由输入提供,寻找一条换乘次数最少的线路方案。输入第一行为三个整数n、m、v,表示城市数、单向航线数和起点城市。以下m行每行两个整数,表示一条边的起点、终点,保证不重复、不失败。2≤n≤20,1≤m≤190输出共n-1行,分别是从起点城市v到其他n-1个城市最少换乘次数,按照终点城市序号从小到大顺序输出,不能抵达时输出-1。样例输入3 2 0 0 1 1 2样例输出1 2 #include#includeusing namespace std;int a[20][20]={0};int b[20];int n;bool *visit;v
阅读全文
摘要:描述图(graph)是数据结构 G=(V,E),其中V是G中结点的有限非空集合,结点的偶对称为边(edge);E是G中边的有限集合。设V={0,1,2,……,n-1},图中的结点又称为顶点(vertex),有向图(directed graph)指图中代表边的偶对是有序的,用代表一条有向边(又称为弧),则u称为该边的始点(尾),v称为边的终点(头)。无向图(undirected graph)指图中代表边的偶对是无序的,在无向图中边(u,v )和(v,u)是同一条边。输入边构成无向图,求以顶点0为起点的宽度优先遍历序列。输入第一行为两个整数n、e,表示图顶点数和边数。以下e行,每行两个整数,表示一
阅读全文
摘要:描述图(graph)是数据结构 G=(V,E),其中V是G中结点的有限非空集合,结点的偶对称为边(edge);E是G中边的有限集合。设V={0,1,2,……,n-1},图中的结点又称为顶点(vertex),有向图(directed graph)指图中代表边的偶对是有序的,用代表一条有向边(又称为弧),则u称为该边的始点(尾),v称为边的终点(头)。无向图(undirected graph)指图中代表边的偶对是无序的,在无向图中边(u,v )和(v,u)是同一条边。输入边构成无向图,求以顶点0为起点的深度优先遍历序列。输入第一行为两个整数n、e,表示图顶点数和边数。以下e行每行两个整数,表示一条
阅读全文
摘要:描述回文数是这样一个正整数:它从左往右读和从右往左读是一样的。例如1,111,121,505都是回文数。将1到100,000,000内所有回文数按从小到达排序后,第k个回文数是多少呢?输入第一行为一个整数N,表示询问的次数。以下N行每行一个整数k,表示询问第k个回文数是多少。输出输出共N行,按照输入数据的顺序,依次输出第k个回文数。样例输入2 5 10样例输出5 11#includeint main(){int n,j,i,k;scanf("%d",&n);while(n--){scanf("%d",&k);if(k<=9);els
阅读全文
摘要:描述Na 给准备送给ZZ两个整数,a, b,他还计算了这两个整数的平均值c,碰巧c也是整数。 但是Na 突然把b给弄丢了,你要帮助Na通过a, c计算出来b的值。输入输入为一行,两个用空格隔开的整数 a, c (-1000using namespace std;int main(){ int a,c; cin>>a>>c; cout<<2*c-a<<endl; return 0;}
阅读全文
摘要:描述对于一个只由0,1组成的序列,要求该序列中不能有相邻的1。问对于给定长度N,满足条件的0,1序列共有多少种呢?输入第一行为一个整数Q,表示询问的次数。接下来Q行每行一个整数N(1using namespace std;int main(){ int a[45]={0}; int q,n; a[1]=2; a[2]=3; for(int i=3;i>q; for(int j=0;j>n; cout<<a[n]<<endl; } return 0;}
阅读全文
摘要:描述给你一个数字求它的所有约数的和。比如12,约数有1,2,3,4,6,12 加起来是28现在给你一个数字I。 (1 #includeusing namespace std;int main(){ int n,m; cin>>n; int a[1001],b[1001],c[1001]; int i,j=0,k=0; for(i=0;i>a[i]; cin>>m; for(i=0;i<n;i++) { if(a[i]<m) { b[j]=a[i]; j++; }...
阅读全文
摘要:描述给定整数a,b,n,要求计算(a^b)mod n输入多组数据,每组数据一行,为三个用空格隔开的整数a,b,n1using namespace std;__int64 mod(__int64 a,__int64 b,__int64 c) { __int64 m=1; while(b>=1) { if(b%2==1) m=a*m%c; a=a*a%c; b=b/2; } return m; }int main(){ __int64 a,b,c,result; while(...
阅读全文
摘要:描述sed 同学最近突发奇想,认为伟大的建筑物的屋顶应该是“自由堆叠”出来的,他的设计方案是:将各种颜色的长方形建筑板材堆叠在一起,并保证各个板材长边、宽边均相互平行或在一条直线上,板材之间的重叠部分用连接装置固定在一起。你的任务是计算这个“自由堆叠的屋顶”所覆盖的面积。sed 将会在屋顶平面上建立一个二维坐标系,提供给你每个长方形建筑板材左上角、右下角的坐标。为简化计算,这里忽略板材的厚度,假设它们都在同一个平面上。输入输入数据包含多组测试案例。每组测试案例由N(0≤N≤100)开头,后续N行每行包含4个实数x1;y1;x2;y2 (0 #include#includeusing names
阅读全文
摘要:描述一定数目的点或圆在等距离的排列下可以形成一个等边三角形,这样的数被称为三角形数。比如10个点可以组成一个等边三角形,因此10是一个三角形数: x x x x x x x x x x开始18个三角形数是1、3、6、10、15、21、28、36、45、55、66、78、91、105、120、136、153、171。请求出第n个三角形数。输入输入数据包含多组测试用例。每组测试用例为一个整数N,长度不超100。输出对于每组测试用例,输出对应的三角形数。样例输入1 2 3 4 5 11111111样例输出1 3 6 10 15 61728399382716import java.math...
阅读全文
摘要:描述建筑群所有建筑高度分别为h1、h2…hN,可以得到一些单调递减的序列hi1、hi2…hiK,其长度称为建筑群的坡值,这里1≤i1#includeusing namespace std;int main(){ //freopen("a.txt","r",stdin); int n,*a,*count,max; cin>>n; a=(int *)malloc(n*sizeof(int)); count=(int *)malloc(n*sizeof(int)); int i,j; for(i=0;i>a[i]; for(i=0;i=0;i
阅读全文
摘要:描述校ACM协会近四个月举行了为期100天ACM程序设计之马拉松竞赛,竞赛题总数为1000,同学们反响热烈,先后有许多ACM程序设计竞赛爱好者报名,这些选手按报名时间从1开始先后编号,成功解答的题目数为选手的成绩。今天进行成绩统计和颁奖仪式,已知按编号排序的选手成绩(各不相同),根据给定标准成绩将这些选手划为两个部分,小于标准成绩的选手不能获得任何奖项,大于等于标准成绩的选手将得到嘉奖,并依成绩从低到高上台领奖。输入共三行:第一行给出选手人数(不超过1000);第二行依编号从低到高给出选手成绩;第三行给出标准成绩。输出共两行:第一行给出根据标准成绩划分后的选手成绩,小于标准成绩的部分、大于等于
阅读全文
摘要:描述常见文本编辑器的一个功能是搜索,打开一段英文文字,根据一个给定的英文短语,可以搜索得到这个短语在文章中的位置,短语有可能重复出现。现请求出给定的短语在一段文字中出现的最后一个位置。文字中单词从1开始编号,所求的位置为短语第1个单词在这段文字中对应单词的编号。 输入多行,每行以 # 为结束,第1行为一段英文文字(单词数、数字不多于500),其余行是待搜索的英文短语(单词数不多于10)。这里英文文字、英文短语只包含英文单词,这些单词以空格分隔。输出多行,每一行对应输入中给定的短语在文字中出现的最后一个位置,搜索不到时输出-1。样例输入STOCKHOLM April 21 PRNewswire
阅读全文
摘要:描述The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those digits are summed and the process is repeated. This is continued as long as
阅读全文
摘要:描述A checksum is an algorithm that scans a packet of data and returns a single number. The idea is that if the packet is changed, the checksum will also change, so checksums are often used for detecting transmission errors, validating document contents, and in many other situations where it is necess
阅读全文
摘要:描述判断一个数是否为对称且不大于五位数的素数。 输入输入数据含有不多于50个的正整数(0using namespace std;bool sushu(int n);bool duichen(int n);int main(){ int n; while(cin>>n){ if(sushu(n)&&duichen(n)) cout10&&n100&&n1000&&n10000&&n<100000&&n%10==n/10000&&n/100%10==n/1000%10)
阅读全文
摘要:描述自然数中,完数寥若晨星,请在从1到某个整数范围中打印出所有的完数来。所谓“完数”是指一个数恰好等于它的所有不同因子之和。例如,6是完数,因为6=1+2+3。而24不是完数,因为24≠1+2+3+4+6+8+12=36。输入输入数据中含有一些整数n(1<n<10000)。输出对于每个整数n,输出所有不大于n的完数。每个整数n的输出由n引导,跟上冒号,然后是由空格开道的一个个完数,每个n的完数列表应占独立的一行。样例输入100 5000样例输出100: 6 28 5000: 6 28 496 #include#includeint main(){ int n,p,i,t1,t2,temp...
阅读全文
摘要:描述将01串首先按长度排序,长度相同时,按1的个数多少进行排序,1的个数相同时再按ASCII码值排序。 输入输入数据中含有一些01串,01串的长度不大于256个字符。输出重新排列01串的顺序。使得串按基本描述的方式排序。样例输入10011111 00001101 1010101 1 0 1100样例输出0 1 1100 1010101 00001101 10011111 #includeusing namespace std;bool f(char *p1,char *p2){ int len1,num1,num2,i; num1=num2=0; if(strlen(p1)>...
阅读全文
摘要:描述有一些A、C、M组成的字符串,将其按字符A排序。 输入一组测试数据,输入数据由若干行组成,每行是字符A、C或M组成的字符串。输出对所有输入的数据,先按字符A的个数进行升序排序,如果字符A的数量相等,再按出现的先后顺序排序,每行输出一个字符串。样例输入ACM MCA AACAAMMM AACCMM CMAAMMMMMM AAA样例输出ACM MCA AACCMM CMAAMMMMMM AAA AACAAMMM #include#include#include#define MAXNUM 100using namespace std;string arr[MAXNUM];int index=-
阅读全文
摘要:描述已知电文包括的字符集为{A,C,I,M,N,P,T,U},输入对应权值,对字符集合进行哈夫曼编码,完成电文的哈夫曼编码与译码工作。 输入共三行:第一行为对应字符集{A,C,I,M,N,P,T,U}的权值第二行为一段字符串表示的电文(长度不超过1000);第三行为一段电文的哈夫曼编码。输出共十行:前八行为各字符的编码;第九行是与第二行输入对应的哈夫曼编码;第十行是与第三行输入对应的电文。样例输入1 2 3 4 5 6 7 8 NUPTICPCACM 1111011111100样例输出A: 11110 C: 11111 I: 1110 M: 100 N: 101 P: 110 T: 00 U:
阅读全文
摘要:描述二叉树是非常重要的树形数据结构。复制一棵二叉树是在另一个存储区存放相同的结构和内容,而一棵二叉树上所有左右子树互换是在原存储区上的运算。请分别根据先序遍历序列建立两棵的二叉树(用#代表空树或空子树),再将这两棵二叉树复制为左右子树建立第三棵二叉树,输出先序和层次遍历序列,最后将第三棵二叉树上所有左右子树互换,并输出先序和层次遍历序列。输入共三行前两行分别对应两棵二叉树的先序遍历序列,用#代表空树或空子树第三行为第三棵二叉树的根结点。输出共四行前两行为第三棵二叉树生成时的先序、层次遍历序列,后两行为第三棵二叉树左右子树互换后的先序、层次遍历序列。样例输入B # D # # C E # # F
阅读全文
摘要:描述二叉树是非常重要的树形数据结构,层次遍历一棵二叉树是按从上到下、从左到右的次序访问树上的结点。例如,图1020所示的二叉树层次遍历序列为A B C D E F。图1020请根据先序遍历序列建立一棵的二叉树(用#代表空树或空子树),输出层次遍历序列。输入二叉树的先序遍历序列,用#代表空树或空子树输出二叉树层次遍历序列样例输入A B # D # # C E # # F # #样例输出LevelOrder: A B C D E F #include #include using namespace std;class BTNode{public: char data; BTNode ...
阅读全文
摘要:描述二叉树是非常重要的树形数据结构,根据该树的先序、中序或后序遍历序列可以建立一棵二叉树。例如输入先序遍历序列A B # D # # C E # # F # #可以建立图1019-1所示的二叉树,这里用#代表空树或空子树(另一种说法:若无孩子结点,则用#代替),如图1019-2。图1019-1图1019-2请实现基于遍历的二叉树运算:求高度、计算结点数目输入二叉树的先序遍历序列,用#代表空树或空子树。输出共五行前三行依次输出先序、中序和后序遍历序列,第四行输出二叉树的高度,第五行依次输出二叉树总结点数目、叶子结点数目、度为1的结点数目。样例输入A B # D # # C E # # F # #
阅读全文
摘要:描述二叉树(binary tree)是非常重要的树形数据结构,它是结点的有限集合,该集合或者为空集,或者是由一个根和两个互不相交的、称为该根的左子树和右子树的二叉树组成。一般意义上,遍历(traverse)一棵二叉树意味着对该二叉树中的每个结点访问且仅访问一次。(1)若二叉树不为空,先序遍历是指先访问该树根结点,再访问先序遍历左子树,最后先序遍历右子树。(2)若二叉树不为空,中序遍历是指先中序遍历左子树,再访问该树根结点,最后中序遍历右子树。(3)若二叉树不为空,后序遍历是指先后序遍历左子树,再后序遍历右子树,最后访问该树根结点。图1018-1给出一棵二叉树,先序遍历序列为A B D C E
阅读全文
摘要:描述今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。 同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:有一个数字串:312, 当N=3,K=1时会有以下两种分法:1) 3*12=362) 31*2=62这时,符合题目要求的结果是:31*2=62现在,请你帮助你的
阅读全文
摘要:#includeusing namespace std;#define max 200int main(){ int a[max]={0},n,e,j,k,q,set=0; char c[20]; while(cin>>c>>n) { int len=strlen(c),base=0,i,record=0; for(i=0;i=0;i--) if(a[i]!=0) break; if(record>i) { cout...
阅读全文
摘要:描述求两个正整数的最大公约数和最小公倍数输入两个正整数A,B输出两个正整数的最大公约数、最小公倍数样例输入4 3样例输出1 12#include using namespace std;void swap(int &x,int &y){ int temp=x; x=y; y=temp;}int gcd(int m,int n){ if(m==0) return n; if(m>n) swap(m,n); return gcd(n%m,m);}int main(){ int m,n,a,b; cin>>m>>n; a=gcd(m,n); ...
阅读全文
摘要:描述在一组数据(数目不超过10000)中,插入新数,删除所有与给定数相等的数据。输入第一行是未排序的一组非负整数,数目不超过10000。以-1作为结束标志。第二行是要插入的数。第三行是要删除的数。输出第一行输出自小到大排好序的数。如果没有元素,输出“No elements.”(不包括引号)。第二行输出插入后自小到大排好序的数,以“,”隔开。第三行输出删除后自小到大排好序的数,以“,”隔开。如果没有元素,输出“No elements.”(不包括引号)。样例输入100 98 79 63 44 99 -1 88 79样例输出44,63,79,98,99,100 44,63,79,88,98,99,1
阅读全文
摘要:描述给定三条边的长度,判断能否组成三角形,如果可以,判断三角形的形状。 输入一组数据,每行三个实数,在(0,10]之间,精确到小数点后第四位。最后以0 0 0表示结束。输出根据每行的数据判断,如果不能组成三角形,则输出“Not a triangle”;如果是“等腰三角形”,则输出“Isosceles triangle”;如果是“直角三角形”,则输出“Right triangle”;如果是“等腰直角三角形”,则输出“Isosceles right triangle”;如果是“等边三角形”,则输出“Equilateral triangle”;否则,输出“General triangle”。最后输出
阅读全文
摘要:描述将一个十进制数N转换成R进制数输出,2≤R≤16,R≠10。输入多行。第一行指出以下一共有多少组数据,后续每行包含两个整数N和R,以空格分隔,-100000≤N≤100000,2≤R≤16,R≠10。输出多行。每行给出转换后的R进制数。样例输入3 7 2 23 12 -4 3样例输出111 1B -11#include #include #define N 17using namespace std;int main(){ int m,n,r; int a[N]={0}; scanf("%d",&m); for(int j=0;j=0;i--) ...
阅读全文
摘要:描述求两个非负整数(1000位以内)的和。输入两个非负整数(1000位以内),以空格分隔。输出两个非负整数的和。样例输入111111111111 222222222222样例输出333333333333#include #include using namespace std;#define N 1001int main(){ char a[N],b[N]; int sum[N]; for (int j=0;j>a; m1=strlen(a); cin>>b; m2=strlen(b); m3=m1m2?m1:m2; for (int i=0;i...
阅读全文
摘要:描述要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(nusing namespace std;int number[500];int main(){ int n,sum=0,i; number[0]=1; for(i=1;i>n; for(i=0;i<=n/2;i++) sum+=number[i/2]; cout<<sum; return 0;}
阅读全文
摘要:描述编程精确计算2的N次方。(N是介于100和1000之间的整数)。输入正整数N (100≤N≤1000)输出2的N次方样例输入200样例输出1606938044258990275541962092341162602522202993782792835301376#includeusing namespace std;int main(){ int a[350]={0}; int n; cin>>n; int i,j,f=1; a[0]=1; for(i=0;i9) { a[j]%=10; ...
阅读全文
摘要:描述在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。给定公元2000年1月1日后的某年某月某日(包括2000年1月1日),你的任务:(1)给出这一天从公元2000年1月1日开始逝去的天数,(2)判断这一天是当年的第几天。输入输入包含若干行,每行包含三个空格间隔的正整数,它们分别表示年、月、日。输入最后一行是−1, 不必处理。可以假设结果的年份不会超过9999。输出多组,每组两行,分别为每行输入所代表的一天从公元200
阅读全文
摘要:描述a3 = b3 + c3 + d3为完美立方等式。例如123 = 63 + 83 + 103 。编写一个程序,对任给的正整数N (N≤100),寻找所有的四元组(a, b, c, d),使得a3 = b3 + c3 + d3,其中1using namespace std;int main(){ int n,a,b,c,d; int a1,b1,c1,d1; cin>>n; for(a=2;a<=n;a++) { a1=a*a*a; for(b=2;b<n;b++) { b1=b*b*b; ...
阅读全文
摘要:描述线性表是n个元素的有序集合(n³0),n是线性表中元素的个数,称为线性表的长度。可以用一组地址连续的存储单元依次存储线性表中元素,采用这种存储方式的线性表称为顺序表。请在顺序表上实现运算,实现顺序表的逆置,删除表中所有元素值等于x的元素。输入三组数据,顺序表元素类型分别为整型、字符型和实型。每一组第一行给出元素数目n(0using namespace std;const int N=1001;int main(int argc, char *argv[]){ int a[N],a1; char b[N],b1; float c[N],c1; int n1,n2,n3...
阅读全文
摘要:描述在数学上,斐波那契数列(Fibonacci Sequence),是以递归的方法来定义:F0 = 0 F1 = 1 Fn = Fn - 1 + Fn - 2 用文字来说,就是斐波那契数列由0和1开始,之后的斐波那契数就由之前的两数相加。首几个斐波那契数是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,………………特别指出:0不是第一项,而是第零项。在西方,最先研究这个数列的人是比萨的列奥纳多(又名斐波那契),他描述兔子生长的数目时用上了这数列。n
阅读全文
摘要:描述给定N个整数(1const int N = 101;int main(){ int a[N]; int n,i,max,min; while(scanf("%d",&n)==1) { max = -1,min = 101; for(i=1;imax) max = a[i]; if(a[i]<min) min = a[i]; } printf("%d %d\n",max,min); } return 0;}
阅读全文
摘要:描述给定两个整数,求它们之和。 输入两个整数A,B.输出两个整数的和。样例输入1 2样例输出3#include int main() { int a,b; scanf("%d %d",&a, &b); printf("%d\n",a+b); return 0; }
阅读全文
摘要:Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.click to show follow up.Follow up:Did you use extra space? A straight forward solution using O(mn) space is probably a bad idea. A simple improvement uses O(m + n) space, but still not the best solution. Cou
阅读全文
摘要:Follow up for "Remove Duplicates": What if duplicates are allowed at most twice?For example, Given sorted array A = [1,1,1,2,2,3],Your function should return length = 5, and A is now [1,1,2,2,3].思考:双指针,A[i]与A[cur]前两个值比较。class Solution {public: int removeDuplicates(int A[], int n) { // IMPO
阅读全文
摘要:Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists./** * Def...
阅读全文
摘要:You are climbing a stair case. It takes n steps to reach to the top.Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?思考:DP,斐波拉契。class Solution {public: int climbStairs(int n) { // IMPORTANT: Please reset any member data you declared, as ...
阅读全文
摘要:Given a collection of intervals, merge all overlapping intervals.For example, Given [1,3],[2,6],[8,10],[15,18], return [1,6],[8,10],[15,18].思考:先排序。比较相邻两个interval,left为前一个start,若后一个start小于等于前一个,说明这两个interval需要合并,right为两个end较大者。若后一个start大于前一个end,说明这两个interval不需要合并,输出前一个。/** * Definition for an interva
阅读全文
摘要:Given a sorted array of integers, find the starting and ending position of a given target value.Your algorithm's runtime complexity must be in the order of O(log n).If the target is not found in the array, return [-1, -1].For example, Given [5, 7, 7, 8, 8, 10] and target value 8, return [3, 4].思
阅读全文
摘要:Given a 2D board and a word, find if the word exists in the grid.The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once.For example, Given board =[
阅读全文
摘要:Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string.If the last word does not exist, return 0.Note: A word is defined as a character sequence consists of non-space characters only.For example, Given s = "He
阅读全文
摘要:Implement pow(x, n).思考:一开始想的太复杂了,跟这一题联系起来了(链接)。后来看到返回值是double型,所以此题就没有那么复杂了。毕竟面试题不会要求写一大堆代码的,最重要的还是考察算法思想:快速幂取模,当然这里不用取模。class Solution {public: double pow(double x, int n) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for...
阅读全文
摘要:Implement int sqrt(int x).Compute and return the square root of x.思考:参考链接:http://www.cnblogs.com/pkuoliver/archive/2010/10/06/sotry-about-sqrt.htmlclass Solution {public: int sqrt(int x) { // Start typing your C/C++ solution below // DO NOT write int main() function double an...
阅读全文
摘要:Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3].The largest rectangle is shown in the shaded area, which has
阅读全文
摘要:Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).For example: Given binary tree {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7return its zigzag level order traversal as:[ [...
阅读全文
摘要:Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).For example: Given binary tree {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7return its level order traversal as:[ [3], [9,20], [15,7]]confused what "{1,#,2,3}" means? > rea.
阅读全文
摘要:There are N children standing in a line. Each child is assigned a rating value.You are giving candies to these children subjected to the following requirements:Each child must have at least one candy.Children with a higher rating get more candies than their neighbors.What is the minimum candies you
阅读全文
摘要:Given an array of integers, every element appears three times except for one. Find that single one.Note: Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?思考:参考这里。class Solution {public: int singleNumber(int A[], int n) { // IMPORTANT...
阅读全文
摘要:Given an array of integers, every element appears twice except for one. Find that single one.Note: Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?思考:位运算。class Solution {public: int singleNumber(int A[], int n) { // IMPORTANT: Pleas...
阅读全文
摘要:A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.Return a deep copy of the list.思考:先进行单链表复制,在定义random指针,每个结点的random指针都要遍历一次链表,时间复杂度为O(n2)。/** * Definition for singly-linked list with a random pointer. * struct RandomLi
阅读全文
摘要:Given a linked list, return the node where the cycle begins. If there is no cycle, return null.Follow up: Can you solve it without using extra space?思考:第一步:设环长为len,快慢指针q、p相遇时,q比p多走了k*len。 第二部:p先走k*len步,p,q一起走每次一步,相遇时p比q多走了一个环距离,此时q就是环开始结点。通过分析AC的感觉真好!class Solution {public: ListNode *detectCycle(...
阅读全文
摘要:Given a linked list, determine if it has a cycle in it.Follow up: Can you solve it without using extra space?思考:快慢指针,快指针一次走两步,慢指针一次一步。若快指针跟慢指针指向同一个结点,则有环。若快指针到达链表末尾即指向NULL,说明没有环。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : ...
阅读全文
摘要:Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes' values.For example, Given {1,2,3,4}, reorder it to {1,4,2,3}.思考:[微软原题点击]。O(n2)方法这里就不贴了。因为每次要插入的结点都是尾结点,从头结点开始寻找时间都花费在查询上。题意说只可以改变.next,这算是一个提示吧。我们可以翻转待插入链表结点
阅读全文
摘要:Given a binary tree, return the postorder traversal of its nodes' values.For example: Given binary tree {1,#,2,3}, 1 \ 2 / 3return [3,2,1].Note: Recursive solution is trivial, could you do it iteratively?思考:原思路是为每个节点增加一个标记。这个思路先序遍历不要标记,因为当前访问结点直接出栈,不用看是否访问过。不过此思路redefinition of 'struct...
阅读全文
摘要:Given a binary tree, return the preorder traversal of its nodes' values.For example: Given binary tree {1,#,2,3}, 1 \ 2 / 3return [1,2,3].Note: Recursive solution is trivial, could you do it iteratively?思考:不可以递归,那么用栈存储结点。先用递归法做,算是加深记忆。需要注意ret需要清空,不然会记录上一次测试用例,所以将先序遍历单独写出来。class Solutio...
阅读全文
摘要:Sort a linked list using insertion sort.思考:画图帮助理解,考虑以下情况:空链表,单结点链表,两个结点(第二个结点大于或小于第一个),多个结点。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *insertionSortList(Li...
阅读全文
摘要:Implement strStr().Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack.思考:复习KMP算法。class Solution {public: char *strStr(char *haystack, char *needle) { // IMPORTANT: Please reset any member data you declared, as // the same Solut...
阅读全文
摘要:Given an array and a value, remove all instances of that value in place and return the new length.The order of elements can be changed. It doesn't mat...
阅读全文
摘要:Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not allocate extra space for...
阅读全文
摘要:Given a linked list, swap every two adjacent nodes and return its head.For example, Given 1->2->3->4, you should return the list as 2->1->4->3.Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.思考:考虑几种情况:空链表,单节
阅读全文
摘要:Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.思考:合并双链表的基础上增加循环。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *...
阅读全文
摘要:Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.For example, given n = 3, a solution set is:"((...
阅读全文
摘要:Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]&qu
阅读全文
摘要:Given a linked list, remove the nth node from the end of list and return its head.For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5.Note: Given n will always be valid. Try to do this in one p
阅读全文
摘要:Given a digit string, return all possible letter combinations that the number could represent.A mapping of digit to letters (just like on the telephon...
阅读全文
摘要:Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.Note:Elements in a quadruplet (a,b,c,d) must be in non-descending order. (ie, a ≤ b ≤ c ≤ d)The solution set must not contai
阅读全文
摘要:Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers....
阅读全文
摘要:Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of ...
阅读全文
摘要:const string roman[]={ "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", &
阅读全文
摘要:Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.思考:罗马数字有I,V,X,L,C,D,M。其中4,9左减,其他右加。class Solution {public: string intToRoman(int num) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance...
阅读全文
摘要:Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpo...
阅读全文
摘要:Determine whether an integer is a palindrome. Do this without extra space.click to show spoilers.Some hints:Could negative integers be palindromes? (ie, -1)If you are thinking of converting the integer to string, note the restriction of using extra space.You could also try reversing an integer. Howe
阅读全文
摘要:Implement atoi to convert a string to an integer.Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are r
阅读全文
摘要:Reverse digits of an integer.Example1: x = 123, return 321 Example2: x = -123, return -321click to show spoilers.Have you thought about this?Here are some good questions to ask before coding. Bonus points for you if you have already thought through this!If the integer's last digit is 0, what sho
阅读全文
摘要:The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)P A H NA P L S I I GY I RAnd then read line by line: "PAHNAPLSIIGYIR"Write the code that will take a string
阅读全文
摘要:Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longes...
阅读全文
摘要:You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8注意点:改了又改,好多测试用例没有考
阅读全文
摘要:Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters fo...
阅读全文
摘要:There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).思考:既然是有序数组,自然想到折半搜索。每次比较去掉其中一个数组一半的数字。class Solution {public: int func(int *A,int m,int *B,int n,int k) { if(m>n) return func(B,n,A,m,
阅读全文
摘要:Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two nu...
阅读全文
摘要:动态规划的实质是将较大问题问题分解为较小的同类子问题。与分治法和贪心法不同的是,动态规划法利用最优子结构,自底向上从子问题的最优解逐步构造出整个问题的最优解。 设计一个动态规划算法,通常可以按一下4个步骤进行: (1)刻画最优解的结构特性;(2)递归定义最优解值;(3)自底向上计算最优解值; (4)根据计算得到的信息构造一个最优解。 一个最优化多步决策问题是否适合用动态规划方法求解有两个要素:最优子结构核重叠子问题。 虽然动态规划法也是基于分解思想的,但由于子问题往往是重叠的,为了避免重复计算,动态规划算法采用字自底向上的方式进行计算,并且保存已求解的子问题的最优解值。当这些子最优解值被重复.
阅读全文