一 。
可以用
scanf("%d%d%d%d%d%d",&n,&m,&r,&c,&x,&y);getchar();
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
scanf("%c",&a[i][j]); }
getchar();
}
或者
for(i=1;i<=n;i++){
scanf("%s",a[i]+1);
}
或者一律采用cin就不用getchar
二。负数的二进制表示
对应整数的反码加一。
例:-1. 0001
反:1110
结果: 1111.
三。排列函数 next_permutation
1.定义:next_permutation函数将按字母表顺序生成给定序列的下一个较大的排列,直到整个序列为降序为止。
prev_permutation函数与之相反,是生成给定序列的上一个较小的排列。二者原理相同,仅遍例顺序相反
2.用法:
#include<cstdio>
#include<algorithm>
using namespace std;
int main() {
int n, p[10];
scanf("%d", &n);
for(int i = 0; i < n; i++) scanf("%d", &p[i]);
sort(p, p+n); // 排序,得到p的最小排列
do {
for(int i = 0; i < n; i++) printf("%d ", p[i]); // 输出排列p
printf("\n");
} while(next_permutation(p, p+n)); // 求下一个排列
return 0;
}
四,数字转换为字符串
应用: 判断 一个数 是否含“4”
#include <string>
for (int i = 10000; i <= 99999; i++) {
string s = to_string(i);
int flag = 0;
for (int j = 0; j < 5; j++)
if (s[j] == '4') flag = 1;
}
五,小数点后保留10位,左对齐,占20个字符
printf("%-20.10lf%-20.10lf%-20.10lf\n",s,cs,v);
六,vector 的应用。
1.创建二维数组
int N=5, M=6;
vector<vector<int> > Matrix;
cin>>n;
Matrix.resize(n+1);
for(int i =0; i< Matrix.size(); i++){
Matrix[i].resize(M);
}
注意: 二维vector输入时不能对每一个直接赋值。
赋值方法一
for (int i = 1; i <= n; i++) {
string temp;
cin >> temp;
for (int j = 1; j <= m; j++) {
Matrix[i][j] = temp[j - 1] - '0';
}
}
方法二
vector<vector<int>> Matrix;
vector<int> v;
int n,temp;
for (int i = 0; i<n; i++) {
v.clear(); //每次记得clear:)
for (int j = 0; j < n; j++)
{
cin >> temp;
v.push_back(temp);
}
Matrix.push_back(v);
}
升级简单版:
vector<int> father[maxn];
for(i=1;i<=n;i++)
{
scanf("%d",&j);
father[j].push_back(i);
}
八。string
1. 反转函数 reverse(a.begin(),a.end() );
string 插入函数 insert 例题: 蓝桥 s01串
问题描述
s01串初始为”0″
按以下方式变换
0变1,1变01
输入格式
1个整数(0~19)
输出格式
n次变换后s01串
样例输入
3
样例输出
101
数据规模和约定
0~19
string s="0";
int i,n;
scanf("%d",&n);
while(n--){
for(i=0;i<s.length();i++){
if(s[i]=='0')
s[i]='1';
else {
s.insert(i,"0");
i++;
}
}
}
cout<<s;
二。转换为大小写
string m;
m[i] = toupper(m[i]);//转换为大写
m[i] = tolower(m[i]);//转小写
九。多行的带空格读入
处理办法:
string a,b[500],c[500];
cin>>a;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++){
getline(cin,b[i]);
c[i]=b[i];
reverse(b[i].begin(),b[i].end());//字符串 反转函数
}