八戒买礼物
OpenJudge - 01:八戒买礼物http://sdau.openjudge.cn/2021array/01/
#include<iostream>
using namespace std;
int main() {
int ans[510], n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> ans[i];
}
//排序
for (int k = 1; k <= n - 1; k++) {
int flags = 0;
for (int j = 1; j <= n - k; j++)
if (ans[j] > ans[j + 1]) {
int temp = ans[j];
ans[j] = ans[j + 1];
ans[j + 1] = temp;
flags = 1;
}
if (flags==0)
break;
}
//条件 调试:2 1 0 0;2 0 1 1;2 2 1 1;2 2 1 3;
//注意 2 1 0 0; 用i<=n限制
int z=0, sum = 0;
for (int i = 1; i <= n && sum < m; i++) {
sum += ans[i];
z++;
if (sum > m) {
z--;
break;
}
}
cout <<z << endl;
return 0;
}
倒置排序
OpenJudge - 02:倒置排序http://sdau.openjudge.cn/2021array/02/
#include<iostream>
using namespace std;
double a[100000];
int main() {
int n, m, ans[100],arr[100],ad=1;
cin >> n;
while (n--) {
cin >> m;
//填充ans 和 ans的倒置值 arr
//避免 尾数为0的元素 倒置后无法正常输出
for (int i = 1; i <= m;i++) {
int a,sum=0;
cin >> a;
ans[i] = a;
while (a) {
sum =sum*10+ a % 10;
a /= 10;
}
arr[i]=sum;
}
//排序
for(int j=1;j<=m-1;j++)
for(int k=1;k<=m-j;k++)
if (arr[k] > arr[k + 1]) {
int temp = arr[k];
arr[k] = arr[k + 1];
arr[k + 1] = temp;
temp = ans[k];
ans[k] = ans[k + 1];
ans[k + 1] = temp;
}
//将结果存入新数组ad
//(以为要输入后全部输出,其实不用)
// 输入元素为整数,故用浮点数0.1标志换行
for (int g = 1; g <= m + 1; g++,ad++) {
if (g == m + 1)
a[ad] = 0.1;
else
a[ad] = ans[g];
}
}
//输出
//ad比实际输入多一
for (int i = 1; i < ad; i++) {
if (a[i] == 0.1)
cout << endl;
else
cout << a[i] << ' ';
}
return 0;
}
计算鞍点
OpenJudge - 04:计算鞍点http://sdau.openjudge.cn/2021array/04/1.
#include <iostream>
using namespace std;
int ans[6][6];
int main() {
int max, min, flag=0;
//填充
for (int i = 1; i <= 5; i++)
for (int k = 1; k <= 5; k++)
cin >> ans[i][k];
//找行最大值
for (int i = 1; i <= 5; i++) {
max = 1, min = i, flag;
for (int k = 1; k <= 5; k++) {
if (ans[min][max] < ans[min][k])
max = k;
}
//判断该行最大值是否为该列最小值
for (int j = 1; j <= 5; j++) {
if (j == min)
continue;
if (ans[min][max] > ans[j][max]) {
flag = 0;
break;
}
else
flag = 1;
}
if (flag) {
cout <<min<<' '<<max<<' '<<ans[min][max] << endl;
return 0;
}
}
cout<<"not found" << endl;
return 0;
}
2.
寻找配对数
OpenJudge - 05:寻找配对数http://sdau.openjudge.cn/2021array/05/1.
#include <iostream>
using namespace std;
int ans[1010];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> ans[i];
//排序
//减少判断
for(int i=1;i<=n-1;i++)
for(int j=1;j<=n-i;j++)
if (ans[j] > ans[j + 1]) {
int temp = ans[j];
ans[j] = ans[j + 1];
ans[j + 1] = temp;
}
int add=0;
// 1 (2) (3) 4 5 6
for (int i = 1; i <= n; i++)
for (int j = i + 1; j <= n; j++)
for (int k = j+1; k <= n;k++)
if (ans[i] * ans[j] == ans[k]) {
add++;
break;
}
cout << add << endl;
return 0;
}
2.
#include<iostream>
using namespace std;
int main(){
int n;
int a[1010], sum = 0;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
//直接枚举
for (int i = 1; i <= n; i++){
for (int j = i + 1; j <= n; j++){
for (int k = j + 1; k <= n; k++){
if (a[i] * a[j] == a[k] || a[i] * a[k] == a[j] || a[j] * a[k] == a[i])
sum++;
}
}
}
cout << sum << endl;
}
扫雷游戏地雷数计算
OpenJudge - 08:扫雷游戏地雷数计算http://sdau.openjudge.cn/2021array/08/
1.
#include<bits/stdc++.h>
using namespace std;
char a[110][110];
int s;
const int y[8]={-1,-1,-1,0,0,1,1,1};
const int x[8]={-1,0,+1,-1,1,-1,0,1};
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]!='*'){
s=0;
for(int k=0;k<8;k++)
if(a[i+y[k]][j+x[k]]=='*') s++;
cout<<s;
}
else
cout<<'*';
}
cout<<endl;
}
}
2.
数组为int型,填充0
char a
输入a
a为'*‘时,数组变成’1‘
输出八个方位的和