矩阵乘法:
#include<iostream>
using namespace std;
int main() {
int n, m,i,j;
cin >> n >> m;
int res[30][30],temp[30][30];
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
cin >> res[i][j];
temp[i][j] = res[i][j];
}
}
for (int q = 0; q < m-1; q++) {
int temp2[30][30] = { 0 };
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
temp2[i][j] += res[i][k] * temp[k][j];
}
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
res[i][j] = temp2[i][j];
}
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (m == 0&&i==j) {
cout << 1 << ' ';
continue;
}
else if (m==0){
cout << 0 << ' ';
continue;
}
cout << res[i][j] << ' ';
}
cout << endl;
}
return 0;
}
01字串
#include<iostream>
using namespace std;
int main()
{
int i, j, k, m, n;
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
for (k = 0; k < 2; k++) {
for (m = 0; m < 2; m++) {
for (n = 0; n < 2; n++) {
cout << i << j << k << m << n << endl;
}
}
}
}
}
return 0;
}
2n皇后 递归回溯算法八皇后问题
#include <iostream>
#include<stdlib.h>
#include<vector>
#include<math.h>
using namespace std;
int warray[9] = { 0 }; //用于存放白皇后位置 warray[1] = 2,表示1行2列有白皇后
int barray[9] = { 0 }; //用于存放黑皇后位置
int vis[9][9] = { 0 }; //用于存放输入矩阵
int n;
int cnt = 0; //记录摆放方法总数
int whiteQuene(int x) { //摆放白皇后
if (x > n) {
cnt++;
return 0;
}
for (int tj = 1; tj <= n; tj++) {
if (!vis[x][tj] || tj == barray[x]) {//此处若放有黑皇后,那么不能在这放置
continue;
}
int j = 1;
while (j < x) { //检测是否相同列或者对角线已存在相同颜色皇后
if (warray[j] == tj || fabs(j - x) == fabs(warray[j] - tj)) {//这里取绝对值直接将对半分的两条对角线全部排除
break;
}
j++;//保存此时的j值,如果检测到不是本行放置的皇后,那么不再进入递归
}
if (j == x) {
warray[x] = tj;
whiteQuene(x + 1);
}
}
return 0;
}
int blackQuene(int x) { // 摆放黑皇后
if (x > n) {
whiteQuene(1); //每当黑皇后摆放完一种,就开始摆放白皇后
return 0;
}
for (int tj = 1; tj <= n; tj++) {
if (!vis[x][tj]) {
continue;
}
int j = 1;
while (j < x) { //检测是否相同列或者对角线已存在相同颜色皇后
if (barray[j] == tj || fabs(x - j) == fabs(tj - barray[j])) {
break;
}
j++;
}
if (j == x) {
barray[x] = tj;
blackQuene(x + 1);
}
}
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
int t;
cin >> t;
vis[i][j] = t;
}
}
blackQuene(1);
cout << cnt;
return 0;
}
sine之舞 字符串拼接
#include<iostream>
#include<string>
using namespace std;
string An(int n);
int main() {
int n,i;
string Sn = "",temp,pt = "0";
cin >> n;
for (i = 0; i < n; i++) {
if (i == n - 1) {
Sn = Sn + An(i+1) + "+" + "1";
break;
}
pt = "0";
pt[0] = pt[0] + (n - i);
Sn = "(" + Sn + An(i+1) +"+"+ pt+")";
}
cout << Sn << endl;
return 0;
}
//递归不可行
string An(int n) {
string temp = "sin",ret = "",pt = "0";
for (int i = n; i >= 1; i--) {
if (i == n) {
pt = "0";
pt[0] = pt[0] + n;
ret = temp + "(" + pt + ")";
continue;
}
if (i == 1) {
ret = temp + "(1-" + ret + ")";
break;;
}
if (i % 2 == 0) {
pt = "0";
pt[0] = pt[0] + i;
ret = temp + "(" + pt + "+" + ret + ")";
}
else {
pt = "0";
pt[0] = pt[0] + i;
ret = temp + "(" + pt + "-" + ret + ")";
}
}
return ret;
}
报时助手
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main() {
int h, m;
cin >> h;
cin >> m;
map<int, string> init;
init.insert({ {0,"zero"}, {1, "one"} ,{2,"two"}, {3,"three"}, {4,"four"}, {5,"five"} ,{6,"six"} ,{7,"seven"}, {8,"eight"}, {9,"nine"} ,{10,"ten"}, {11,"eleven"} ,{12,"twelve"} ,{13,"thirteen"}, {14,"fourteen"}, {15,"fifteen"}, {16,"sixteen"}, {17,"seventeen"} ,{18,"eighteen"}, {19,"nineteen"}, {20,"twenty"},{30,"thirty"},{40,"forty"},{50,"fifty"} });
string res;
if (h <= 20) {
if (m == 0) {
cout << init[h] << " o'clock"<<endl;
}
else {
if (m <= 20) {
cout << init[h] << " " << init[m] << endl;
}
else {
cout << init[h] << " " << init[(m / 10)*10] <<" "<< init[m % 10] << endl;
}
}
}
else {
if (m == 0) {
cout << init[(h / 10) * 10] << " " << init[h % 10] << " o'clock" << endl;
}
else {
if (m <= 20) {
cout << init[(h / 10) * 10] << " " << init[h % 10] << " " << init[m] << endl;
}
else {
cout << init[(h / 10) * 10] << " " << init[h % 10]<< " " << init[(m / 10) * 10] <<" "<< init[m % 10] << endl;
}
}
}
return 0;
}
#include<iostream>
using namespace std;
string n[100] = { "zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven",
"twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty",
"thirty","forty","fifty" };
void ass(int num) {
int a = num / 10;
int b = num % 10;
if (num <= 20) {
cout << n[num];
}
else {
cout << n[a + 18];
if (b != 0) {
cout << " " << n[b];
}
}
}
void time_ass(int hour, int minu) {
if (minu == 0) {
ass(hour);
cout << " o'clock" << endl;
}
else {
ass(hour);
cout << " ";
ass(minu);
cout << endl;
}
}
int main() {
int h, m;
cin >> h >> m;
time_ass(h, m);
return 0;
}
查找整数
#include<iostream>
using namespace std;
int main()
{
int n,temp[1000],m;
cin >> n;
for (int i = 0; i < n; i++)
cin >> temp[i];
cin >> m;
for (int j = 0; j < n; j++) {
if (temp[j] == m) {
cout << j + 1 << endl;
return 0;
break;
}
}
cout << -1 << endl;
return 0;
}
高精度算法 (大数相乘)
#include <iostream>
#include <string>
using namespace std;
int main() {
string a,b;
int c[1500] = { 0 }, d[1500] = { 0 };
int i, k, t, m, n;
cin >> a;
cin >> b;
// 分别求出每位数字的位数
m = a.size();
n = b.size();
// 将数据倒序储存在两个数组中,
// 将最低位存在c[0]中,最高位存在最后
for (i = 0; i < m; i++) {
c[i] = a[m - i - 1] - '0';
}
for (i = 0; i < n; i++) {
d[i] = b[n - 1 - i] - '0';
}
k = m > n ? m : n;
t = k - 1;// 标记最高位
for (i = 0; i < k; i++) {
c[i] += d[i];
// 考虑是否进位
if (c[k - 1] >= 10) t = k;
if (c[i] >= 10) {
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
}
for (i = t; i >= 0; i--) cout<<c[i];// 倒序输出
return 0;
}
龟兔赛跑预测
#include<iostream>
using namespace std;
int main()
{
int v1, v2, t, s, l;
int temp1 = 0, temp2 = 0,leap = 0,tempt = 0;//第一个用来记录兔子的路程,第二个用来记录乌龟的路程
cin >> v1 >> v2 >> t >> s >> l;
while (temp1 < l&&temp2 < l) {
tempt++;
temp1 += leap == 0 ? v1 : 0;
leap = leap > 0 ? leap - 1 : 0;
temp2 += v2;
if (temp1 - temp2 >= t && leap==0) {
leap = s;
}
}
if (temp1 == temp2 && temp1 == l) {
cout << 'D' << endl;
cout << l / v2;
return 0;
}
if (temp1 == l) {
cout << 'R' << endl;
cout << temp2 / v2;
return 0;
}
else {
cout << 'T' << endl;
cout << l / v2;
}
return 0;
}
回文数
#include<iostream>
using namespace std;
bool check(int n);
int main()
{
int i;
for (i = 1000; i < 10000; i++) {
if (check(i))
cout << i << endl;
}
return 0;
}
bool check(int n) {
int temp = 0, temp1 = n;
if (n % 10 == 0)
return false;
while (n > 0) {
temp = temp * 10 + n % 10;
n /= 10;
}
return temp == temp1;
}
阶乘计算(大数相乘)
#include<iostream>
using namespace std;
void carry(long long fac[]);
void output(long long fac[]);
int main() {
int n;
cin >> n;
long long fac[3000] = {0};
fac[0] = 1;//初始化阶乘数组
for (int i = 1; i <= n; i++) {
for (int j = 0; j < 3000; j++) {
fac[j] *= i;
}
carry(fac);//进位
}
output(fac);
return 0;
}
void carry(long long fac[]) {
int i;
for (i = 0; i < 2999; i++) {
if (fac[i] >= 10) {
fac[i + 1] += fac[i] / 10;
fac[i] %= 10;
}
}
}
void output(long long fac[]) {
int le = 0;
for (int i = 2999; i >= 0; i--) {
if (fac[i] != 0&&!le) {
le = 1;
cout << fac[i];
continue;
}
if (le)
cout << fac[i];
}
}
矩形面积交(捂脸)方法太笨了,想了想还是发出了
#include<iostream>
#include<math.h>
using namespace std;
int main() {
double a1, a2, b1, b2, x1, x2, y1, y2,res;
cin >> a1 >> b1 >> a2 >> b2;
cin >> x1 >> y1 >> x2 >> y2;
if (a1<a2&&b1>b2) {
double temp = b1; b1 = b2; b2 = temp;
}
else if (a1 > a2&&b1 > b2) {
double temp = b1; b1 = b2; b2 = temp;
temp = a1; a1 = a2; a2 = temp;
}
else if (a1 > a2&&b1 < b2) {
double temp = a1; a1 = a2; a2 = temp;
}
if (x1<x2&&y1>y2) {
double temp = y1; y1 = y2; y2 = temp;
}
else if (x1 > x2&&y1 > y2) {
double temp = y1; y1 = y2; y2 = temp;
temp = x1; x1 = x2; x2 = temp;
}
else if (x1 > x2&&y1 < y2) {
double temp = x1; x1 = x2; x2 = temp;
}
//分五种情况,左上交,右上交,全等,左下交,右下交
if (a1 == x1 && a2 == x2 && b1 == y1 && b2 == y2) {
res = fabs((a2 - a1)*(b2 - b1));
printf("%.2lf", res);
return 0;
}
if (x1 >= a1 && x1 <= a2 && y1 >= b1 && y1 <= b2) {
res = fabs((a2 - x1)*(b2 - y1)); printf("%.2lf", res); return 0;
}
if (x2 >= a1 && x2 <= a2 && y1 >= b1 && y1 <= b2) {
res = fabs((x2 - a1)*(b2 - y1)); printf("%.2lf", res); return 0;
}
if (x2 >= a1 && x2 <= a2 && y2 >= b1 && y2 <= b2) {
res = fabs((x2 - a1)*(b1 - y2)); printf("%.2lf", res); return 0;
}
if (x1 >= a1 && x1 <= a2 && y2 >= b1 && y2 <= b2) {
res = fabs((a1 - x1)*(b1 - y2)); printf("%.2lf", res); return 0;
}
printf("%.2lf", 0.00);
return 0;
}
输出杨辉三角
#include<iostream>
using namespace std;
int main()
{
int temp[34][34] = {1};
int n;
cin >> n;
//斜遍历
for (int i = 0; i < n; i++) {
temp[i][i] = 1;
temp[i][0] = 1;
}
//列填充
for (int j = 1; j < n; j++) {
for (int k = j + 1; k < n; k++) {
temp[k][j] = temp[k-1][j] + temp[k - 1][j - 1];
}
}
for (int m = 0; m < n; m++) {
for (int p = 0; p < n; p++) {
if (temp[m][p])
cout << temp[m][p] << ' ';
}
cout << endl;
}
return 0;
}
数列特征
#include<iostream>
using namespace std;
int main()
{
int n,sum = 0, min = 10000, max = -10000,temp;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> temp;
if (min > temp)
min = temp;
if (max < temp)
max = temp;
sum += temp;
}
cout << max << endl;
cout << min << endl;
cout << sum << endl;
return 0;
}
水仙花数
#include<iostream>
#include<math.h>
using namespace std;
bool check(int n);
int main()
{
int i;
for (i = 100; i < 1000; i++) {
if (check(i))
cout << i << endl;
}
return 0;
}
bool check(int n)
{
int temp = 0,temp1 = n;
while (n) {
temp = temp + (int)pow(n % 10, 3);
n /= 10;
}
return temp == temp1;
}
特殊回文数
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main()
{
char fiv[6], six[7];
string temp1, temp2;
int i, n, j, temp;
cin >> n;
//五位数
for (i = 10000; i < 100000; i++) {
temp = 0;
sprintf_s(fiv, "%d", i);
temp1 = fiv;
_strrev(fiv);
temp2 = fiv;
if (temp2 == temp1) {
for (j = 0; j < 5; j++) {
temp += fiv[j] - '0';
}
if (temp == n)
cout << fiv << endl;
}
}
for (i = 100000; i < 1000000; i++) {
temp = 0;
sprintf_s(six, "%d", i);
temp1 = six;
_strrev(six);
temp2 = six;
if (temp2 == temp1) {
for (j = 0; j < 6; j++) {
temp += six[j] - '0';
}
if (temp == n)
cout << six << endl;
}
}
return 0;
}
bool check(int n) {
int temp = 0, temp1 = n;
while (n) {
temp += n % 10;
temp *= 10;
n /= 10;
}
if (temp == temp1)
return true;
return false;
}
完美的代价
#include<iostream>
#include<algorithm>
using namespace std;
int check(char temp[],int n);
int main() {
char ret[8000];
int i,j, n,end,cnt = 0;
cin >> n; end = n - 1;
for (i = 0; i < n; i++) {
cin >> ret[i];
}
if (check(ret, n)) {
for (i = 0; i < end; i++) {
for (j = end; j >= i; j--) {
if (j == i) {
cnt += n / 2 - i;
}
else if (ret[i] == ret[j]) {
for (int k = j; k < end; k++) {
swap(ret[k], ret[k + 1]);
cnt++;
}
end--;break;
}
}
}
cout << cnt << endl;
}
else {
cout << "Impossible" << endl;
}
}
int check(char temp[], int n) {
int count,leap = 0;
for (int i = 97; i <= 122; i++) {
count = 0;
for (int j = 0; j < n; j++) {
if (temp[j] == i) count++;
}
if (count % 2 != 0 && leap > 0) return 0;
if (count % 2 != 0) {
leap++; continue;
}
}
return 1;
}
芯片测试
#include<iostream>
using namespace std;
int main()
{
int res[20][20],n,i,j;
cin >> n;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
cin >> res[i][j];
}
}
for (i = 0; i < n; i++) {
res[i][i] = 0;
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (res[i][j]) {
if (res[j][i]) {
cout << i + 1 << ' ';
break;
}
}
}
}
return 0;
}
质因数分解 混合输出
#include<iostream>
using namespace std;
int check(int i);
int main() {
int a, b;
cin >> a >> b;
for (int i = a; i <= b; i++) {
if (check(i))
cout << i << '=' << i << endl;
else {
int temp = i;
cout << i << '=';
for (int j = 2; j < i; j++) {
if (temp%j == 0) {
cout << j; temp /= j; cout << '*';
while (temp != 1&&temp%j==0) {
cout << j << '*'; temp /= j;
}
}
}
printf("\b ");
cout << endl;
}
}
printf("\b");
return 0;
}
int check(int i) {
for (int j = 2; j < i; j++) {
if (i%j == 0)
return 0;
}
return 1;
}
字母图形 找规律
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n, m,k,j;
cin >> n >> m;
vector<vector<char> > res(n, vector<char>(m));
//行填充
for (int i = 0; i < m; i++) {
res[0][i] = 'A' + i;
for (j = 1,k = i+1; j < n&&k < m; j++, k++)
res[j][k] = res[0][i];
}
//列填充
for (int i = 1; i < n; i++) {
res[i][0] = 'A' + i%26;
for (j = i + 1, k = 1; j < n&&k < m; j++, k++)
res[j][k] = res[i][0];
}
//输出
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << res[i][j];
}
cout << endl;
}
return 0;
}
Fj的字符串
#include<iostream>
#include<string>
using namespace std;
int main() {
string res = "A",temp = "B";
int n,i;
cin >> n;
for (i = 1; i < n; i++) {
temp[0] = res[res.size() / 2]+1;
res = res + temp + res;
}
cout << res << endl;
return 0;
}
Huffuman树 (使用优先级队列进行降序处理)
#include<iostream>
#include<queue>
using namespace std;
class mycmp {
public :
bool operator() (int a, int b) {
return a > b;
}
};
priority_queue<int,vector<int>,mycmp> q;
int main() {
int n,temp,charge = 0,twosum = 0;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> temp;
q.push(temp);
}//全部压入优先级队列中
while (q.size()!=1) {
twosum = 0;
for (int i = 0; i < 2; i++) {
charge += q.top();
twosum += q.top();
q.pop();
}
q.push(twosum);
}
cout << charge << endl;
return 0;
}
回形取数
#include<iostream>
using namespace std;
int main() {
int temp[200][200], m, n;
int chest;
cin >> m>>n;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> temp[i][j];
}
}
for (chest = 0; chest < 200&&temp[m/2][n/2]; chest++) {
if (!chest % 2) {
for (int i = 0; i < m - chest/3; i++) {
if (!temp[i][chest / 3])
break;
cout << temp[i][chest / 3] << ' ';
temp[i][chest / 3] = 0;
}
}
else {
for (int i = 0; i < n - chest/3; i++) {
if (!temp[i][chest/3])
break;
cout << temp[chest / 3][i]<<' ';
temp[chest / 3][i] = 0;
}
}
}
return 0;
}
十六进制转八进制
//数据过于庞大 使用long long 型也远远不能满足条件 化为十进制储存是明显行不通的,
//现在只能是十六进制先转二进制 在由二进制转为八进制。
//第一个是为转化为十进制的
//第二个是转化为二进制随后转化为八进制的
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
int main()
{
long long n, t = 0, i, ei = 0, j, eig;
string temp;
long long eight[10] = { 0 };
cin >> n;
for (i = 0; i < n; i++) {
t = 0; ei = 0; eig = 0;
cin >> temp;
for (j = 0; j < temp.size(); j++) {
t += ((long long)temp[j] >= 65 ? (long long)(temp[j] - 55) : (long long)(temp[j] - 48))*(long long)pow(16, temp.size() - j - 1);
}
while (t) {
ei *= 10;
ei += t % 8;
t /= 8;
}
while (ei) {
eig *= 10;
eig += ei % 10;
ei /= 10;
}
eight[i] = eig;
}
for (i = 0; i < n; i++) {
cout << eight[i] << endl;
}
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
for (int k = 1; k <= n; k++)
{
string s1, s2;//s1为输入的原始的十六进制串,s2为转化成的二进制串
cin >> s1;
s2 = "";//初始化
for (int i = 0; i < s1.length(); i++)//遍历,字符串上加上每一位
{
switch (s1[i])
{
case '0':s2 += "0000"; break;
case '1':s2 += "0001"; break;
case '2':s2 += "0010"; break;
case '3':s2 += "0011"; break;
case '4':s2 += "0100"; break;
case '5':s2 += "0101"; break;
case '6':s2 += "0110"; break;
case '7':s2 += "0111"; break;
case '8':s2 += "1000"; break;
case '9':s2 += "1001"; break;
case 'A':s2 += "1010"; break;
case 'B':s2 += "1011"; break;
case 'C':s2 += "1100"; break;
case 'D':s2 += "1101"; break;
case 'E':s2 += "1110"; break;
case 'F':s2 += "1111"; break;
default:break;
}
}
int len = s2.length();
if (len % 3 == 1)//三个二进制为一位八进制,二进制串前面补0,确保二进制串的长度为3的倍数
s2 = "00" + s2;
else if (len % 3 == 2)
s2 = "0" + s2;
int flag = 0;
for (int i = 0; i <= s2.length() - 3; i += 3)
{
int num = 4 * (s2[i] - '0') + 2 * (s2[i + 1] - '0') + (s2[i + 2] - '0');
if (num)
flag = 1;//忽略前导0
if (flag)
cout << num;
}
cout << endl;
}
return 0;
}
十六进制转十进制
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
int main()
{
long long t = 0, j;
string temp;
cin >> temp;
for (j = 0; j < temp.size(); j++) {
t += ((long long)temp[j] >= 65 ? (long long)(temp[j] - 55) : (long long)(temp[j] - 48))*(long long)pow(16, temp.size() - j - 1);
}
cout << t << endl;
return 0;
}
数的读法 繁复的判断
#include<iostream>
#include<string>
using namespace std;
string wan(int temp);
int main() {
int temp = 2000000000;
string res = "";
cin >> temp;
//个位
res = wan(temp % 10000);
//万位
if (temp / 10000) {
if ((temp % 10000) >= 1000)
res = wan((temp % 100000000) / 10000) + "wan " + res;
else if ((temp % 10000) > 0)
res = wan((temp % 100000000) / 10000) + "wan " + "ling " + res;
else
res = wan((temp % 100000000) / 10000) + "wan";
}
//亿位
if (temp / 100000000) {
if ((temp % 100000000) >= 10000000)
res = wan(temp / 100000000) + "yi " + res;
else if ((temp % 100000000) > 0)
res = wan(temp / 100000000) + "yi " + "ling " + res;
else
res = wan(temp / 100000000) + "yi";
}
for (int i = 0; i != res.size(); i++) {
if (res.substr(i, 2) == "yi"&&res.substr(i + 3, 3) == "shi")
res = res.substr(0, i) + res.substr(i + 3);
}
while (res.substr(res.size() - 5, res.size()) == "ling ") {
res = res.substr(0, res.size() - 5);
}
cout << res<< endl;
return 0;
}
string wan(int temp) {
string ret[14] = {"ling ", "yi ","er ","san ","si ","wu ","liu ","qi ","ba ","jiu ","shi ","bai ","qian ","" };
string res = "";
int leap = 0,t = temp;
while (t) {
t /= 10; leap++;
}
if (leap == 1)
res = ret[temp];
if (leap == 2)
res = ret[temp / 10] + ret[10] + ret[temp % 10];
if (leap == 3) {
if ((temp % 100) < 10)
res = ret[temp / 100] + ret[11] + ret[0] + ret[temp % 100];
else
res = ret[temp / 100] + ret[11] + ret[(temp % 100) / 10] + ret[10] + ret[temp % 10];
}
if (leap == 4) {
if ((temp % 1000) >= 100) {
res = ret[temp / 1000] + ret[12]; temp %= 1000;
if ((temp % 100) < 10)
res = res + ret[temp / 100] + ret[11] + ret[0] + ret[temp % 100];
else
res = res + ret[temp / 100] + ret[11] + ret[(temp % 100) / 10] + ret[10] + ret[temp % 10];
}
else {
res = ret[temp / 1000] + ret[12]; temp %= 1000;
if (temp >= 10)
res = res + ret[temp / 10] + ret[10] + ret[temp % 10];
else
res = res + ret[0] + ret[temp];
}
}
return res;
}
数列排序 使用库函数
//使用库文件进行排序
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> v1;
int temp;
while (1) {
cin >> temp;
v1.push_back(temp);
if (cin.get() == '\n')
break;
}
sort(v1.begin(),v1.end());
for (int i = 0; i < n; i++) {
cout << v1[i] << ' ';
}
return 0;
}
//手动写 选择法排序
#include<iostream>
using namespace std;
int main()
{
int n, i, j, temp;
int nums[200];
cin >> n;
for (i = 0; i < n; i++) {
scanf_s("%d", &nums[i]);
}
for (i = 0; i < n - 1; i++) {
temp = i;
for (j = i + 1; j < n; j++) {
if (nums[j] < nums[temp]) {
temp = j;
}
}
int te = nums[temp];
nums[temp] = nums[i];
nums[i] = te;
}
for (i = 0; i < n; i++) {
cout << nums[i] << ' ';
}
return 0;
}
字符串对比
#include<iostream>
#include<string>
using namespace std;
int main() {
int i;
string a, b;
cin >> a;
cin >> b;
if (a.size() != b.size()) cout << 1 << endl;
else {
if (a == b) cout << 2 << endl;
else {
for (i = 0; i != a.size(); i++) {
if (toupper(a[i]) != toupper(b[i])) {
cout << 4; break;
}
}
if (i == a.size()) cout << 3;
}
}
return 0;
}