A
2018
B
7的阶乘 / 2(A重复)
C
14
D
12.5 * 1024 * 1024
E
#include<iostream>
using namespace std;
int main()
{
int n;
int a, b, c;
cin >> n;
cin >> a >> b >> c;
int ans = 0;
for (int i = 1; i <= n; i++)
{
if (i % a != 0 && i % b != 0 && i %c != 0)
{
ans++;
}
}
cout << ans << endl;
return 0;
}
F
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
cin >> s;
int len = s.length();
string news = "";
for (int i = 0; i < len; i++)
{
if (s[i] >= 'x')
{
news += s[i] - 23;
}
else
{
news += s[i] + 3;
}
}
cout << news << endl;
return 0;
}
G
#include<iostream>
using namespace std;
#define MAX_N 1001
int a[MAX_N][MAX_N];
int main()
{
int n, m;
int r, c;
cin >> n >> m;
int Max = n*m;
cin >> r >> c;
if (1 == n && 1 == m)
{
cout << "1" << endl;
return 0;
}
int x = 1;
for (int i = 0; i < n / 2 ; i++)
{
for (int j = i; j <= m-i-1; j++) //上
{
a[i][j] = x;
x++;
}
for (int j = i + 1; j <= n-i-1; j++) // 右
{
a[j][m-i-1] = x;
x++;
}
for (int j = m - i - 2; j >= i; j--)//下
{
a[n-i-1][j] = x;
x++;
}
for (int j = n - i - 2; j >= i + 1; j--)//左
{
a[j][i] = x;
x++;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
cout << a[r - 1][c - 1] << endl;
return 0;
}
H
深度搜索,符合条件就往下一层
#include<iostream>
using namespace std;
int ans = 0;
int m, n;
int pre = 2;
int p;
bool isB()//ji
{
if (p > pre)
return true;
else
return false;
}
bool isO()//ou
{
if (p < pre)
return true;
else
return false;
}
void func(int i, int x)
{
if (i == m+1)
{
ans++;
return;
}
for (int j = 1; j <= n; j++)
{
p = j;
if (i % 2 == 0)
{
if (isO())
{
pre = p;
func(i + 1, p);
pre = x;
}
}
if (i % 2 == 1)
{
if (isB())
{
pre = p;
func(i + 1, p);
pre = x;
}
}
}
}
int main()
{
cin >> m >> n;
for (int i = 2; i <= n; i++)
{
pre = i;
func(2, pre);
}
cout << ans << endl;
return 0;
}
I
最小生成树问题
#include<iostream>
#include<math.h>
using namespace std;
#define MAX_N 100
#define INF 99999999
int n;
int x[MAX_N], y[MAX_N], h[MAX_N];
int A[MAX_N][MAX_N];
int sum = 0;
void Prim(int (*A)[MAX_N], int v)
{
int lowcost[MAX_N];
int MIN;
int closest[MAX_N];
int i, j, k;
for (i = 0; i < n; i++)
{
lowcost[i] = A[v][i];
closest[i] = v;
}
for (i = 1; i < n; i++)
{
MIN = INF;
for (j = 0; j < n; j++)
{
if (lowcost[j] != 0 && lowcost[j] < MIN)
{
MIN = lowcost[j];
k = j; //记录最近顶点的编号
}
}
cout << "==================" << endl;
cout << "边(" << closest[k] << "," << k << ")权为:" << MIN << endl;
sum += MIN;//计算费用
lowcost[k] = 0;
for (j = 0; j < n; j++)
{
if (lowcost[j] != 0 && A[k][j] < lowcost[j])
{
lowcost[j] = A[k][j];
closest[j] = k;
}
}
}
cout << "===========================" << endl;
cout << "总共花费了 " << sum << endl;
}
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> x[i] >> y[i] >> h[i];
}
cout << "=======================" << endl;
for (int i = 0; i < n; i++) //邻接矩阵
{
for (int j = 0; j < n; j++)
{
A[i][j] = sqrt(pow((x[i] - x[j]), 2) + pow((y[i] - y[j]), 2)) + pow((h[i] - h[j]), 2);
cout << A[i][j] << " ";
}
cout << endl;
}
cout << "============================" << endl;
Prim(A, 0);
return 0;
}
J
后续补充