java 洛谷 算法1_1系列 P1042 P2670 java题解

java 洛谷P1042 乒乓球

第一次没满分,上网搜了一下规则,达到满分,思路规则如下
在这里插入图片描述

题解

设华华得分sumW,对手得分sumL;

题意:

  1. 给定字符串,出现W时sumW++,出现L时sumL++;
  2. 结束比赛标志(比赛规则):
    11分制,当一方先达到11分,且双方成绩差大于2,结束比赛,输出双方分数;
    21分制,当一方先达到21分,且双方成绩差大于2,结束比赛,输出双方分数;
    或遇见E,比赛结束,输出双方分数
代码:
import java.util.Scanner;

public class P1042乒乓球 {


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        StringBuilder stringBuilder = new StringBuilder();
        while (scanner.hasNext()) {
            String string = scanner.nextLine();
            stringBuilder.append(string);
            if (string.contains("E")) {
                break;
            }
        }
        char[] chars = stringBuilder.toString().toCharArray();
        sort2(chars,11);
        System.out.println();
        sort2(chars,21);

    }

    //分制  
    private static void sort2(char[] chars, int b) {
        int sumW = 0, sumL = 0;
        for(int i=0;chars[i]!='E';i++) {
            if(chars[i]=='W'){
                sumW++;
            }else {
                sumL++;
            }
            if(Math.abs(sumW-sumL)>=2 && (sumW>=b||sumL>=b)) {
                System.out.println(sumW+":"+sumL);
                sumW=0;sumL=0;
            }
        }
        System.out.println(sumW+":"+sumL);
    }
}

P2670扫雷游戏

  1. 题意比较简单,所以就直接附上代码啦
  2. 下面代码涉及到数组越界问题的思路
  3. 注意一下的i是从1开始的,数组总长度是arr.length+2;
/**扫描模拟时,避免数组越界问题
 * 数组整体向右平移
 */

import java.util.Scanner;

public class P2670扫雷游戏_01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt(), m = scanner.nextInt();

        char[][] arr = new char[n + 2][m + 2];
        scanner.nextLine();
        for (int i = 1; i < arr.length - 1; i++) {
            char[] chars = scanner.nextLine().toCharArray();
            for (int j = 1; j < arr[i].length-1 ; j++) {
                arr[i][j] = chars[j-1];
            }
        }

        //初始化已成功
        mum(arr);
        for (int i = 1; i < arr.length -1; i++) {
            for (int j = 1; j < arr[i].length-1; j++) {
                System.out.print(arr[i][j]);
            }
            System.out.println();
        }

    }

    //检测周围八个有几个雷
    private static void mum(char[][] arr) {
        for (int i = 1; i < arr.length - 1; i++) {
            for (int j = 1; j < arr[i].length - 1; j++) {
                int num = 0;

                if (arr[i][j]=='*') {
                    continue;
                }else{
                    for (int m = i - 1; m <= i + 1; m++) {
                        for (int s = j - 1; s <= j + 1; s++) {
                            if ( arr[m][s] == '*') {
                                num++;
                            }
                        }
                    }
                }
                arr[i][j] = (char) (num + '0');
            }
        }
    }
}

1_1系列 后续待补充

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱代码的猿猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值