刷题笔记

1. 判断素数的算法
  https://blog.csdn.net/huang_miao_xin/article/details/51331710(按定义来的那种)
  https://blog.csdn.net/gfvod/article/details/51487506(米勒罗宾,有点高级)
  https://blog.csdn.net/u011036919/article/details/62044677(筛选法)

2. 一些好用的函数

/**************************************************************/
//字符串倒置
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
    string str;
    getline(cin, str);
    reverse(str.begin(), str.end());
    cout << str;
    system("pause");
    return 0;
}
/**************************************************************/
//大小写转换(不知道为什么,在有#include<iostream>时,没有这个头文件也能用)toupper,tolower;
#include<ctype.h>
str2[i] = toupper(str2[i]);//必须是字符
str2[i] = tolower(str2[i]);
/**************************************************************/
//数字变字符串
#include<string>
str=to_string(a);//(str字符串,a数字)
/**************************************************************/
//得到某类型的最大最小值
#include<limits.h> 

int max = INT_MIN; /* 用最小值初始化 */
int min = INT_MAX; /* 用最大值初始化 */
long long a = LLONG_MAX;
/**************************************************************/
//
/**************************************************************/
//
/**************************************************************/
//

3. PAT乙级1015
  vector的使用;
  sort的妙用(cmp);
  迭代器的使用,注意printf里用的(->)而不是(.);
  记住scanf、printf比cin、cout省时间;

4. 输出格式

//头文件
#include <iomanip>
//保留小数后两位
cout << setprecision(2) << fixed << num;

5.插入排序和归并排序
  插入排序:是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。

  归并排序:进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。

  算法题目超链接https://blog.csdn.net/u011036919/article/details/66472703

6.求最大公约数

long long gong(long long a, long long b)
{
    long long c = 0;
    while (a%b != 0)
    {
        c = a%b;
        a = b; 
        b = c;
    }
    return b;
}

7.特定情况下四舍五入的小技巧
背景:输出的行数实际上是列数的50%(四舍五入取整)。

//int row,col;
row = (col + 1) / 2;

8.比较巧妙的一道题(PAT1040)
  https://blog.csdn.net/u011036919/article/details/66475196

9.sscanf和sprintf的搭配使用
  https://blog.csdn.net/u011036919/article/details/68065100

10.printf

//d:整数;5:预留5个位置;0:预留的位置填0
printf(" %05d", num);

11.位运算

与&;
或|;
异或^;
左移<<;
右移>>;

12.一些STL用法

stack<int> ans;
vector<int> rev;
ans.push(p->val);
ans.pop();
ans.top();//只是读,不会拿出来
ans.empty();
rev.push_back(ans.top());

//map的遍历
//使用m.size()可以得知map里放了几个东西;
map<string,int> m;
map<string,int>::iterator it;
it = m.begin();
while(it != m.end()){
    //it->first;
    //it->second;
    it ++;         
}

//set的使用
[C++中set的用法](https://www.cnblogs.com/omelet/p/6627667.html)
[简单例子](https://blog.csdn.net/u011036919/article/details/81743580)

13.全排列
  字符串的排列

14.约瑟夫环
  孩子们的游戏

15.回溯法
  矩阵中的路径

16.BFS
  迷宫寻路

17.DFS
  地下迷宫(DFS,BFS均有编程,但BFS的未完成)
  幸运的袋子
  数字和为sum;求和(非递归;递归;两版本)

18.动态规划
  暗黑的字符串

19.进制转换(超简单)
  进制转换

20.字典序
  异或
  字典序

16.剑指OFFER精选
  1、二叉树递归(前序:根左右;中序:左根右;后序:左右根)
  树的子结构
  重建二叉树
  二叉树中和为某一值的路径(DFS)
  序列化二叉树
  2、位操作(别人的分析也很有意思)
  变态跳台阶
  二进制中1的个数
  不用加减乘除做加法
  3、链表
  合并两个排序的链表
  4、堆栈
  栈的压入、弹出序列

当时没好好看,必须重新编程
https://blog.csdn.net/u011036919/article/details/70876352

一些输出格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值