华为机试刷题总结

1,最小公倍数=两数之积/最大公约数。
2,牛顿迭代思想,xn+1=xn-f(xn)/f'(xn)即x=x-(x3-y)/(3*x2)=(2*x+y/x/x)/3;#include<iomanip>
 cout<<setprecision(1)<<fixed<<newton(num)<<endl;//输出一位小数
3,字符逆序,string
4.字符统计,#include<map> map<char,int>m  ,map提供的是一种键值对容器
5,冒泡排序#include<bits/stdc++.h>强大的头文件功能
6,表示数字,isdigit()判断数字
7.记票统计,#include <vector>
8.放苹果,一,明确函数功能;二,寻找递归结束条件;三,找出函数的等价关系式。
9.#include <bitset>  bitset<32> bs(n)将n转换成32位的2进制数 bs.count()1的数目。
10,字符串排序 #include<vector> vector<char>tempchar;tempchar.clear();tempchar.push_back(s[i]);
11,数字颠倒a += n % 10+'0';//转化为字符型。
12,字符串通配符。动态规划:最重要的是设置初值 和找到递推式:const bool ret = match(pattern.c_str(), str.c_str());临时指针,bool返回true和false。
13进制转换cin>>hex>>m十六进制转十进制
14数组相乘利用vector创建二维数组vector<vector<int> > a(x, vector<int>(y, 0));
15成绩排序vector<string>n[101];桶排序n[i].push_back(name) for (auto i : vec) cout<<i<<endl;
16double y = (200 - 14 * x) / 8.0;
17s1.substr(start, max)取字符
18#include<algorithm> sort(a,a+26)
19#include<map> map<int, int>m; (auto a = m.begin(); a != m.end(); a++ )map<int,int>iterator it
20大数相加a = "0" + a;temp=a[i] - '0';a[i]=temp%10+'0';进位carry
  21四则运算printf(input())
22 贪心算法 埃及分数 当一个真分数分子不为1时,首先不是进行贪心算法,而是先判断能否进行一个偷巧的分解,即   若b%(a-1)==0,则a/b=1/[b/(a-1)]+1/b*/
23合唱队reverse(dp2.begin(), dp2.end());反转函数
24cout << s.substr(num, len) << endl;
25火车进站#include<stack> 栈函数 next_permutation(a,a+n)全排列
26迷宫问题 回溯算法把问题的解空间转化成了图或者树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所有可行解或者最优解。回溯法的实现方法有两种:递归和递推(也称迭代)
27 strcmp(*char,*char)比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。 [1-2] 
28#include <sstream>ss << inputstr;
        ss >> ip1a >> ch >> ip1b >> ch >> ip1c >> ch >> ip1d;
        ss.clear();
29,R.erase(unique(R.begin(), R.end()), R.end());//去重
30 s.substr(0, 8)取字符
31,前序遍历跑圈,中序遍历顺序,后序遍历吃葡萄。

32,c与c++的区别:C++是面向对象的语言,而C是面向过程的结构化编程语言 语法上: C++具有重载、继承和多态三种特性 C++相比C,增加多许多类型安全的功能,比如强制类型转换、 C++支持范式编程,比如模板类、函数模板等。

33,链表和二叉树

struct TreeLinkNode {
    int val;
    struct TreeLinkNode *left;
    struct TreeLinkNode *right;
    struct TreeLinkNode *parent;
    TreeLinkNode(int x){val(x),left(NULL),right(NULL),parent(NULL)}

};
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :val(x),next(NULL){}
};

34,dfs和bfs问题

#include<iostream>
#include<queue>
#include<string>
using namespace std;
int a[5];
void dfs(int now)
{
    if (now == 3)
    {
        for (int i = 0; i < 3 ; i++)  cout << a[i];
        cout << '\n';
        return;
    }
    for (int i = 0; i < 2; i++)
    {
        a[now] = i;
        dfs(now + 1);
    }
}
queue<string> q;
void bfs()
{
    string s = "";
    q.push(s);
    while (!q.empty())
    {
        //cout << "*\n";
        string t = q.front();
        q.pop();
        if (t.size() == 2)
        {
            cout << t << '\n';
            continue;
        }
        for (int i = 0; i < 2; i++)
        {
            string nxt = t;
            if(i == 0)  nxt += '0' ;
            else  nxt += '1';
            q.push(nxt);
        }
    }
}
int main()
{
    //dfs(0);
    bfs();
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值