华为OJ初级
十飞我谁
不忘初心
展开
-
华为OJ题目(五):字符串最后一个单词的长度
#include #include using namespace std;#define maxsize 100 int main(){ int i, j,len; char str[maxsize]; gets(str); len = strlen(str); if (len == 0) { return 0; } if (len > 128)原创 2015-11-13 09:02:54 · 387 阅读 · 0 评论 -
华为OJ题目(十四):进制转换
//进制转换#include #include using namespace std;int main(){ int len,sum=0,quan=1; string str; getline(cin, str); len = str.length(); /*char str[100]; gets(str); len=strlen(str);*/ for ( int原创 2016-01-13 15:25:28 · 568 阅读 · 0 评论 -
华为OJ题目(十六):字符串匹配
//字符串匹配#include #include using namespace std;int main(){ string pshort, plong; cin >> pshort; cin >> plong; int flag,i,j; for ( i = 0; i < pshort.size(); i++) { flag = 0; for (j = 0;原创 2016-03-07 10:18:46 · 454 阅读 · 0 评论 -
华为OJ题目(十七):矩阵乘法
//矩阵乘法#include using namespace std;void matrix_multiply(int *m1, int*m2, int*r, int x, int y, int z){ for (int i = 0; i < x;i++) for (int j = 0; j < y;j++) for (int k = 0; k < y;k++) {原创 2016-03-07 11:12:08 · 546 阅读 · 0 评论 -
华为OJ题目(十八):图片整理
//图片整理#include #include using namespace std;int main(){ char temp; string str; cin >> str; for (int i = 0; i < str.length();i++) { for (int j = i + 1; j <str.length(); j++) { if (st原创 2016-03-19 18:16:50 · 709 阅读 · 0 评论 -
华为OJ题目(二十):合法IP
//合法IP/*主要判断IP段中每部分的8位是否为数字且在0~255范围内*/#include #include using namespace std;bool ispartip (string str)//判断子字符串是否合法{ int partlen = str.length(); for (int i = 0; i < partlen;i++) { if (原创 2016-04-05 23:01:06 · 588 阅读 · 0 评论 -
华为OJ题目(十九):输出单链表倒数第K个节点
//输出单向链表中倒数第k个结点/*分析:为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。可是输入的是单向链表,只有从前往后的指针而没有从后往前的指针。因此我们需要改变我们的思路。法一:假设整个链表有n个结点,那么倒数第k个结点是从头结点开始的第n-k-1个结点(从0开始计数)。如果我们能够得到链表中结点的个数n,那我们只要从头结点开始往后走n-k-1步就可以原创 2016-03-28 17:16:25 · 627 阅读 · 0 评论 -
华为OJ题目(一):找出字符串中第一个出现一次的字符
#include #include using namespace std; char Findchar(char* pInputString){ if (!pInputString) return 0; //输入不合法 int hashTable[256] = { 0 }; //创建一个哈希表(即创建一个数组),并初始化 //确定字符串中每个字符出现的次原创 2015-10-22 16:18:51 · 427 阅读 · 0 评论 -
华为OJ题目(二):字符个数统计
#include #include using namespace std;int main(){ int a[128] = { 0 }; int sum = 0; string str; getline(cin, str); //输入一个字符串 for (int i = 0; i<128; i++) { for (int j = 0; j<str.length();原创 2015-10-29 16:46:38 · 500 阅读 · 0 评论 -
华为OJ题目(十三):求最小公倍数
//求最小公倍数#include using namespace std;int main(){ int a,b; cin >> a>>b; for (int i = 1; i <= a*b;i++) { if (i%a==0&&i%b==0) { cout << i << endl; break; } } return 0;}原创 2016-01-13 10:20:44 · 389 阅读 · 0 评论 -
华为OJ题目(十二):挑7
//挑7//思路:找到与7有关的数字的个数,除去7的倍数,其中含7的数字(个位含7,十位含7,百位含7...)可通过整除10再取余数来计算#include using namespace std;int main(){ int n,k,j=0; cin >> n;//输入正整数 for (int i = 1; i <= n;i++) { if (i % 7 == 0 )/原创 2016-01-08 11:34:57 · 392 阅读 · 0 评论 -
华为OJ题目(十):称砝码
#include #include using namespace std;int x[99], m[99], f[99999];int main(){ int n, i, j, k, M = 0; cin >> n; //砝码种类 for (i = 1; i <= n; i++) //每种砝码的重要 scanf("%d", &m[i]); for (i = 1; i <=原创 2015-12-21 22:19:33 · 1462 阅读 · 0 评论 -
华为OJ题目(六):名字的漂亮度
思路:这个题目题意有点深奥,但是读懂了,就会比较简单。“漂亮度”,即给每个字母赋值,要求最大的“漂亮度”,即先统计出现字母的类型以及其个数,然后给个数大的字母赋予大的“漂亮值”。例如:“zhangsan”中,a出现2次,n出现2次,z/h/g/s各出现1次,则给a、n从26、25中取值,给z、h、g、s从24、23、22、21中取值,即可实现取最大“漂亮度”。#include using原创 2015-11-22 21:16:45 · 453 阅读 · 0 评论 -
华为OJ题目(七):字符串加密
#include#includeusing namespace std;#define M 100int main(){ char key[M], data[M], encrypt[M]; void Encrypt(char *key, char *data, char *encrypt); gets(key); gets(data); Encrypt(key, data, e原创 2015-11-26 21:31:30 · 701 阅读 · 0 评论 -
华为OJ题目(八):字符串加解密
#include #include using namespace std;void Encrypt(char aucPassword[], char aucResult[]);//声明函数int unEncrypt(char result[], char password[]);int main(){ char aucPassword[100], aucResult[100原创 2015-12-09 12:15:00 · 364 阅读 · 0 评论 -
华为OJ题目(四):字符逆序
#include #include using namespace std;int main(){ string str; getline(cin, str); //输入一个字符串 if (str.length() == 0) { cout << str; } else { for (int i = str.length() - 1; i >= 0; i--)原创 2015-11-13 09:01:01 · 439 阅读 · 0 评论 -
华为OJ题目(三):字符统计
#include #include using namespace std;int main(){ string s; char a[63]; int b[63] = { 0 }, index=0; getline(cin, s); for (int i = 0; s[i]!='\0'; i++) { if (islower(s[i])) //检查原创 2015-11-09 20:46:49 · 542 阅读 · 0 评论 -
华为OJ题目(十一):合唱队
//合唱队/*解题思路:实际上这是一道简单动态规划的题。但是一眼看上去不是很直观。题目所谓的合唱队形就是一个最长上升子序列的拼接。只要求出从队列首到位置 i 的最长上升子序列长度加上从队尾开始到位置 i 的最长上升子序列的长度就能求出合唱队形的总长度。 我们还知道总的人数,减一下就能得出要出列的人数了。*//*求最长上升子序列:现在有一个序列,要求他的最长上升子序列。直观上并不是很好原创 2015-12-30 11:17:27 · 530 阅读 · 0 评论 -
华为OJ题目(九):百钱买百鸡问题
#include using namespace std;void calculate(int n) //i,j,k分别对应鸡翁,鸡母,鸡雏的个数{ for (int i = 0; i <= n / 5; ++i) { for (int j = 0; j <= n / 3; ++j) { for (int k = 0; k <= n; ++k) { if原创 2015-12-16 09:53:39 · 567 阅读 · 0 评论 -
华为OJ题目(十五):求解立方根
//求解立方根/*思路:用牛顿迭代法,即可解决。设 r 是的根,选取 x0 作为 r 的初始近似值:过点(x0, f(x0))做曲线y = f(x)的切线L,L的方程为 y = f(x0) + f′(x0)(x−x0),求出L与x轴交点的横坐标 x1 = x0−f(x0)/f′(x0),称 x1为 r 的一次近似值。过点(x1, f(x1)) 做曲线 y = f(x) 的切线,并求该原创 2016-01-21 11:44:16 · 793 阅读 · 0 评论 -
华为OJ题目(二十一):输入n个整数,输出其中最小的k个
//输入n个整数,输出其中最小的k个/*思路:把输入的n个整数排序,排在最前面的k个数就是最小的k个数。时间复杂度为O(nlogn)*/#include #include #include using namespace std;//bool cmp(int &a, int &b)//{// return a < b;//} int main() { int n,k;原创 2016-04-10 15:54:40 · 1256 阅读 · 0 评论