十二月六日

https://www.liuchuo.net/archives/1431
贪心
https://www.liuchuo.net/archives/1319
2n皇后
https://www.liuchuo.net/archives/1284
龟兔赛跑
1、为了解决Fibonacci数列值过大的问题
需要在递归的过程中对10007取模

F[1] = F[2] = 1;
    for (int i = 3; i <= 1000000; i++) {
        F[i] = (F[i - 1] + F[i - 2]) % 10007;
}

2、cout<<hex<<i<<endl; //输出十六进制数
cout<<setiosflags(ios::uppercase)<<hex<<x; 输出大写的A
cout<<oct<<i<<endl; //输出八进制数
cout<<dec<<i<<endl; //输出十进制数
cout<<bin<<i<<endl; //输出二进制数
// 输出16进制, setbase(int)可以设置8等。
cout << setbase(16) << i << endl;
setioflags(ios::scientific) 指数表示
setiosflags(ios::left) 左对齐
setiosflags(ios::right) 右对齐
setiosflags(ios::skipws 忽略前导空白
setiosflags(ios::uppercase) 16进制数大写输出
setiosflags(ios::lowercase) 16进制小写输出
setiosflags(ios::showpoint) 强制显示小数点
setiosflags(ios::showpos) 强制显示符号

//使用bitset转换二进制

void BinaryBitset(int n) 
{cout<<bitset<sizeof(int)*8>(n)<<endl; } 

或者

#include<cstdio>
#include <iostream>
#include <bitset>
using namespace std;
int main() {
    
    for(int i=0;i<=31;i++)
    {
    bitset<5> a(i); 
    cout<<a;
    if(i!=31)
    cout<<endl;
}
    return 0;
}

在这里插入图片描述
3、#include
fixed是固定的意思 precision是精度的意思 setw是宽度的意思
setfill是填充的意思
ios是输入输出流 flags是标志的意思
double a=1.23456789;

cout<<setprecision(4)<<a  表示输出数a的4位有效数字
cout<<setiosflags(ios::fixed)<<setprecision(4)<<a  表示输出数a的4位小数
double  b=10;
cout<<setfill('*')<<setw(8)<<b ;输出b的时候占8个位 不够的欧诺个*填充

4、字符图形 :
https://www.liuchuo.net/archives/3426
输出 printf("%c",‘A’+abs(i-j))
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
5、max_element
在头文件 #include 中,返回的是迭代器,所以输出值的话要在前面加 *
(2)三个参数cmp可写可不写, max_element() 和 min_element() 默认是从小到大排列,然后 max_element() 输出最后一个值, min_element() 输出第一个值,但是如果自定义的 cmp 函数写的是从大到小排列,那么会导致 max_element() 和min_element() 的两个结果是对调的
(3) 可以用于 vector 或者 vector 等,也可以用于 int arr[4] 或者string arr[4] ,也可以用于结构体vector或者结构体数组~

struct node {    int x, y;};
bool cmp1(node a, node b) {    return a.x > b.x;}
int main() {    
vector<int> v(3);    
int arr[4];    
vector<node> v1(3);    
cout << *max_element(v.begin(), v.end());    
cout << *min_element(arr, arr + 4);    
cout << (*max_element(v1.begin(), v1.end(), cmp1)).y;    return 0;}

6、十六进制转换从十进制

#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main() {
    	string s;cin>>s;
        int len = s.length();
        long long sum = 0;
        for (int i = 0; i < len; i++)
	    {
            if (isalpha(s[i])) {sum = sum * 16 + s[i] - 'A' + 10;}
            else {sum = sum * 16 + s[i] - '0';}
        }
        cout << sum;
   		return 0;
}

7、十进制转换成十六进制

#include <iostream>
using namespace std;
int main() {
    int a;
    cin >> a;
    int i = 0;
    char b[100];
    do{if (a % 16 >= 10)
        b[i++] = a % 16 + 'A' -10;
       else
        b[i++] = a % 16 + '0';
        a = a / 16;
        }while (a != 0) ;
    for (int k = i - 1; k >= 0; k--)
            cout << b[k];
    return 0;
}

8、更简便的方法 进制转化

 cin>>oct>>s;
cout<<setiosflags(ios::uppercase)<<oct<<x; 

9、String和字符数组的转换
字符数组转化成string类型

char ch [] = "ABCDEFG";
string str(ch);//也可string str = ch;
将string类型转换为字符数组
char buf[10];
string str("ABCDEFG");
length = str.copy(buf, 9);
buf[length] = '\0';
或者
char buf[10];
string str("ABCDEFG");
strcpy(buf, str.c_str());//strncpy(buf, str.c_str(), 10);

9、 大小写转换
1)
让字符数组全部大写:strupr
全部小写:strlwr
char str1[100],str2[100];
gets(str1);
gets(str2);
strlwr(str1);
strlwr(str2);

2)
char ch1=tolower(str1[0]);
char ch1=toupper(str1[0]);
Tolower、toupper不改变自身
3)Transform
string str;
cin>>str;
///转小写
transform(str.begin(),str.end(),str.begin(),::tolower); //::toupper大写

10、Time

#include <stdio.h>
#include <time.h>
int main()
{	clock_t t1, t2;
	t1 = clock();	//for循环开始前
	for (int i=0; i<10000000; i++){}
	t2 = clock();	//for循环结束
	double t = (double)(t2-t1)/CLOCKS_PER_SEC;

	printf("start:%ld\n", t1);
	printf("end:%ld\n", t2);
	printf("for循环CPU所经过的秒数:%lf\n", t);
	return 0;
}

11、矩阵的零阶矩阵是单位阵
12、在这里插入图片描述
13、memcpy(b,a,sizeof(a)); 将a元素的值都付给b
14、nth_element(b+x,b+k-1,b+y);对b元素x到y个排序找出第k大个数

猜你喜欢

转载自blog.csdn.net/weixin_43719397/article/details/84867449
今日推荐