华为OJ之放砝码】的更多相关文章

题目描述: 现有一组砝码,重量互不相等,分别为m1.m2--mn:他们可取的最大数量分别为x1.x2--xn.现在要用这些砝码去称物体的重量,问能称出多少中不同的重量. 注: 称重重量包括0: 要对输入数据进行校验 方法原型:public static int fama(int n, int[] weight, int[] nums) 题目分析: 1,遇到这种问题我们最容易想到的解决思路应该就是穷举法了,实际上穷举法是大多数算法的实现基础,只不过优秀的算法能够根据之前已经计算出的部分结果来对以后…
题目描述: 输入m,n,分别表示苹果数与盘子的总数,要求输出苹果放在n个盘子的方法总数(注意511和151是一种情况),例如输入 7 3 输出8((7),(6,1),(5,2),(4,3),(5,1,1),(4,2,1),(3,3,1),(3,2,2)) 思路: 最典型的解法整数分解,例如给定n个苹果,把苹果放到k个盘子里,允许有的盘子为空,不妨设 f(n , k ) (边缘条件为当 n = 0 ,1时,返回1,当 k = 1 时,返回1)表示结果,分析一下可以知道有两种放的方法,一种是有空盘,…
题目描述: 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法.输入每个用例包含二个整数M和N.0<=m<=10,1<=n<=10.<=n<=10<=m<=10样例输入7 3样例输出8 题目分析: 本题实际上是一个划分问题,借助于递归这个强大的工具,我们可以比较容易地进行解决,具体分析思路如下: 1,我们用f(m, n)来表示m个苹果,n个篮子的情况; 2,出口条件:当m &l…
这道题难点不在于代码怎么写,而是思路怎么想. 感觉一般这样的题要么你理好一个思路要么你最后总结出一个公式,要么你自己模拟它的运作方式,用迭代,或者递归的方式来做. 有点像我们曾经学的排列组合. 对于m个苹果.n个盘子f(m,n).假设苹果个数比盘子少,那么就跟n个盘子,n个苹果是一样的f(n,n).假设m比n大.那么有两种情况,一种有空盘子的情况.一种没有空盘子的情况,两种情况不重叠且加一起一定为情况总数. 第一种情况就即为n个盘子放在m-1个盘子里,由于至少有个空盘子. f(m.n-1),另外…
火车进站 给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号.要求以字典序排序输出火车出站的序列号. 输入描述: 有多组测试用例,每一组第一行输入一个正整数N(0<N<10),第二行包括N个正整数,范围为1到9. 输出描述: 输出以字典序从小到大排序的火车出站序列号,每个编号以空格隔开,每个输出序列换行,具体见sample. 输入例子: 3 1 2 3 输出例子: 1 2 3 1 3 2 2 1 3 2 3 1 3 2 1解…
一次偶然的机会,我接触到华为oj平台(http://career-oj.huawei.com/exam/camLogin.jsp),当时的心情很是兴奋,于是立马注册开通,然后迫不及待地上去做题.刚开始基本上每道题都有许多语法和逻辑错误,所以做得极慢,但还是很开心的.一是因为我终于能找到一个我喜欢的量化平台去找自己的差距,二是就好像找到大部队一样,看到那么多学校的同学都在这里,我内心有一种满满的归属感. 兴奋很快转化成了动力,有一段时间我每天早上4点钟就起来打开网页和编辑器,然后准备一支笔一张纸就…
题目描述: 新入职华为的小伙伴们都有在oj上面刷题的任务,共需要刷100道初级题,45道中级题,5道高级题,其中,做出来的高级题如果超标可以当初级或者中级题,做出来的中级题如果超标可以当初级题.每天,出题的大哥会给大家出Xi道题,这Xi道题属于同一个难度级别,小伙伴们要么用一天时间把这些题全做出来,要么就不做.现在,给你每天出题大哥出的题数以及难度,请问,小伙伴们最少要挑选其中几天去做题,才能把这150道题的任务完成呢? 输入示例: 5 100 70 5 5 55 1 2 2 2 3 输出: 表…
题目描述: 连续输入字符串,请按长度为8拆分每个字符创 后输出到新的字符串数组: 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理 输入 连续输入字符串(输入两次,每个字符长长度小于100)输出 输出到长度为8,的新字符串数组样例输入 abc 123456789样例输出 abc00000 12345678 90000000 思路: 都是直接处理,没有具体的方法而言 注意点: 华为的OJ平台的输入输出有点坑,好多次的程序都在这里出问题,在Eclipse上运行的结果没问题,然后在OJ上就是编…
输入n个整数,输出其中最小的k个. 详细描述: 接口说明 原型: bool GetMinK(unsignedint uiInputNum, int *pInputArray, unsignedint uiK, int * pOutputArray); 输入参数: unsignedint uiInputNum //输入整数个数 int * pInputArray  //输入整数数组 unsignedint uiK   //需输出uiK个整数 输出参数(指针指向的内存区域保证有效): int * p…
题目地址: https://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b?tpId=37&&tqId=21293&rp=1&ru=/activity/oj&qru=/ta/huawei/question-ranking 题目内容 矩阵乘法的运算量与矩阵乘法的顺序强相关. 例如: A是一个50×10的矩阵,B是10×20的矩阵,C是20×5的矩阵 计算ABC有两种顺序:((AB)C)或者(A(BC…
华为OJ-合唱队 描述 计算最少出列多少位同学,使得剩下的同学排成合唱队形 说明: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2-,K,他们的身高分别为T1,T2,-,TK, 则他们的身高满足存在i(1<=i<=K)使得 Ti < T2 < ...< Ti-1 < Ti > Ti+1>...>TK 你的任务是,已知所有N位同学的身高,计算最少需…
题目描述: 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C. 输入: 1.第一个矩阵的行数 2.第一个矩阵的列数(也是第二个矩阵的行数) 3.第二个矩阵的列数 4.第一个矩阵的值 5.第二个矩阵的值 输出: 输出两个矩阵相乘的结果 样例输入 2 2 2 3 8 8 0 9 0 18 9 样例输出 171 72 72 0 思路: 题目意思很简单,只是实现两个矩阵乘法功能,要注意的一点是输出的格式. OJ平台中对输出的格式非常严格,经过多次尝试,验证此…
题目1 -- 通过输入英文句子.将每一个单词反过来,标点符号顺序不变.非26个字母且非标点符号的情况就可以标识单词结束. 标点符号包含,.!? 比如输入:Hello, I need an apple. 输出: /** * 华为机试训练1: 通过输入英文句子,将每一个单词反过来.标点符号顺序不变.非26个字母且非标点符号的情况就可以标识单词结束. 标点符号包含,.!? * Hello, I need an apple. * * @author snail * */ public class Mai…
题目链接[https://www.oj.swust.edu.cn/problem/show/2480] 题意:中文题目. 题解:二进制状态转移+坏点判断. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long LL; << ; LL dp[][maxn]; ]; ]; int n, m; int cur; void DFS(i…
题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 151851741 注意:在oj上不能直接套用我的代码,需要将无关的输出去除才行 方法一 思路: 解这道题目最简单的方法就是模拟我们笔算乘法的过程,如:1234×123 只要把这个过程实现,无论多大的数我们都能解决了,是不是很简单. 程序实现: 首先,我们用两个字符串来保存我们的大整数,num1[100],…
这两天断断续续敲完这个(放假的时候比较懒),一次成功有点小激动(●'◡'●)  不过貌似从第一次打开开始计时..... 这道题目很像01背包,我将附件与它们的主件绑定(就是link起来)然后套用动态规划 ok,解决 #include<iostream> #include<vector> using namespace std; class node {//代表主件的类 public: int value; int p;//重要度 int n;//附件个数 int q;//附件指向的…
#include<iostream> using namespace std; bool ishave_7(int n); int main(){ int num,k=0; cin>>num; while(num>6){ if(0==num%7){ k++; num--; continue; } if(ishave_7(num)){ k++; } num--; } cout<<k<<endl; } bool ishave_7(int n){ if(n&…
<img alt="http://img.bbs.csdn.net/upload/201508/06/1438867109_670158.jpg" src="http://img.bbs.csdn.net/upload/201508/06/1438867109_670158.jpg" /> 很简单的一道题 不过作者比较笨 调了几次也只通过第一个测试 代码见楼下 #include <iostream> #include <string&g…
题目描述: 扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A.2各4张,小王1张,大王1张.牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如:4 4 4 4-joker JOKER.请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR.基本…
一.assertion的意义和用法 J2SE 1.4在语言上提供了一个新特性,就是assertion功能,它是该版本在Java语言方面最大的革新. 从理论上来说,通过 assertion方式可以证明程序的正确性,但是这是一项相当复杂的工作,目前还没有太多的实践意义. 在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true:如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出. 一般…
题目描述: 密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分. 一.密码长度: 5 分: 小于等于4 个字符 10 分: 5 到7 字符 25 分: 大于等于8 个字符 二.字母: 0 分: 没有字母 10 分: 全都是小(大)写字母 20 分: 大小写混合字母 三.数字: 0 分: 没有数字  10 分: 1 个数字 20 分: 大于1 个数字 四.符号: 0 分: 没有符号 10 分: 1 个符号  25 分: 大于1 个符号 五.奖励: 2 分: 字母和数字 3 分: 字母.…
题目描述: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 输入: 一个byte型的数字    输出: 对应的二进制数字中1的最大连续数 思路: 通过移位运算可以一次判断每一位的0.1值,然后通过统计可以得到结果 import java.util.Scanner; //byte 的范围是-128~127 public class MaxContinueOne { public static void main(String[] args) {…
题目描述: 统计字符串中的大写字母的个数 输入: 一行字符串 输出: 字符串中大写字母的个数(当空串时输出0) 思路: 这一题很简单,直接判断字符串中的每一个字符即可,唯一要注意的一点是输入的字符串可能包含空格,所以读入的时候要用nextLine()方法 import java.util.Scanner; public class CountCaptial { public static void main(String[] args) { Scanner cin = new Scanner(S…
题目描述: 分子为1的分数称为埃及分数.现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数.如:8/11 = 1/2+1/5+1/55+1/110. 输入: 输入一个真分数,String型 输出: 输出分解后的string 思路: 参考http://blog.csdn.net/hnust_xiehonghao/article/details/8682673中的贪心算法求解 设a.b为互质正整数,a<b 分数a/b 可用以下的步骤分解成若干个单位分数之和: 步骤一: 用b…
题目描述: 判断短字符串中的所有字符是否在长字符串中全部出现 输入: 输入两个字符串. 第一个为短字符,第二个为长字符 输出: true  - 表示短字符串中所有字符均在长字符串中出现 false - 表示短字符串中有字符在长字符串中没有出现 思路: 题目很简单,只需要判断短字符串中的每个字符是否在长字符串中出现即可,无需判断字符之间的顺序等等 import java.util.Scanner; public class MatchString { public static void main…
题目描述: 将两个整型数组按照升序合并,并且过滤掉重复数组元素 输入: 输入说明,按下列顺序输入: 1 输入第一个数组的个数 2 输入第一个数组的数值 3 输入第二个数组的个数 4 输入第二个数组的数值 输出: 输出合并之后的数组 输入样例: 3 1 2 5 4 -1 0 3 2 输出样例: -101235 思路: 先将两个数组合并到一个中,然后对这个完整的数组进行排序,最后剔除重复的数据并输出 import java.util.Scanner; public class ArrayMerge…
题目描述: 对于不同的字符串,我们希望能有办法判断相似程度,我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法如下: 1 修改一个字符,如把“a”替换为“b”. 2 增加一个字符,如把“abdd”变为“aebdd”. 3 删除一个字符,如把“travelling”变为“traveling”. 比如,对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加和减少一个“g”的方式来达到目的.上面的两种方案,都只需要一次操作.把这个操作所需要的次数定义为两个字符串…
题目描述: 请设计一个算法完成两个超长正整数的加法. 输入 输入两个字符串数字 输出 输出相加后的结果,string型 样例输入 99999999999999999999999999999999999999999999999999 1 样例输出 100000000000000000000000000000000000000000000000000 思路: 在Java中,这样的大数运算可以直接用BigInteger类中的方法来进行运算和处理,那样本题没有任何意义了 因此在本方法中,不直接采用该类中…
题目描述: 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和. 例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 输入 输入一个int整数 输出 输出分解后的string 样例输入 6 样例输出 31+33+35+37+39+41 思路: 由例子1~4给出的结论猜测  n3 = (n*(n-1)+1) + (n*(n-1)+2 +1) + ... + (n*(n+1)-2 + 1 )(共n项,等差数列,差为2) 而又等差数列的性质知:…
题目描述: 元前五世纪,我国古代数学家张丘建在<算经>一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一. 百钱买百鸡,问鸡翁.鸡母.鸡雏各几何? 思路: 这道题很简单,假设鸡翁 i 只, 鸡母 j 只, 则有 i + j + k = 100 5*i + 3*j + k/3 = 100 由以上两个等式我们可以推出: j = 25 - i * 7/4 ; k = 75 + i * 3/4 ; 由于i. j. k 必须是0或正整数,所以 i 必须是4的倍数,因此我们下面的程序中也是…