21.12.22

八戒买礼物

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.

(5条消息) CCF NOI1047 寻找鞍点_ppddcsz-CSDN博客https://blog.csdn.net/weixin_60178940/article/details/122087140

寻找配对数

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‘

输出八个方位的和

(5条消息) 14:扫雷游戏地雷数计算_yansuifeng1126的博客-CSDN博客https://blog.csdn.net/yansuifeng1126/article/details/115980970

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值