侧边栏壁纸
博主头像
SeaDream乄造梦

Dream,Don't stop a day of hard and don't give up a little hope。 ——不停止一日努力&&不放弃一点希望。

  • 累计撰写 56 篇文章
  • 累计创建 21 个标签
  • 累计收到 14 条评论

目 录CONTENT

文章目录

洛谷 算法 P1042 P2670 java题解

SeaDream乄造梦
2022-01-27 / 0 评论 / 0 点赞 / 1,571 阅读 / 1,764 字
温馨提示:
亲爱的,如果觉得博主很有趣就留下你的足迹,并收藏下链接在走叭

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');
            }
        }
    }
}
0

评论区