JAVA方向笔试强训-day13

一.编程题 



跳石板_牛客题霸_牛客网 (nowcoder.com)

1.题意:

N = 4,M = 24

每次只能跳N的约数(不包含1和N本身)
4->6->8->12->18->24

2.准备一个数组stepNum[  M+1 ]

数组中每一个元素代表:从起点到这一步的最小步数

起点即使stepNum[ N ]==0;

3.

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) { 
            int N = in.nextInt();
            int M = in.nextInt();
            int[] ret = new int[M + 1];
            for (int i = 0; i <= M; i++) {
                //数组初始化
                ret[i] = Integer.MAX_VALUE;
            }
            ret[N] = 0;
            for (int i = N; i < M; i++) {
                if (ret[i] == Integer.MAX_VALUE) {
                    //表示小易不会到达这里
                    continue;
                }
                List<Integer> n = div(i);//求约数存到n中
                for (int j : n) {
                    if ( i + j <= M) {
                        ret[i + j] = Math.min(ret[i + j], ret[i] + 1);
                        //存最小值,最小步数
                    }
                }
            }
            if (ret[M] == Integer.MAX_VALUE) {
                //表示到达不了
                System.out.println(-1);
            } else {
                System.out.println(ret[M]);
            }

        }
    }

    public static List<Integer> div(int n) {
        List<Integer> list = new ArrayList<>();
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                list.add(i);
                if (n / i != i) {
                    list.add(n / i);
                }
            }
        }
        return list;
    }
}

参数解析_牛客题霸_牛客网 (nowcoder.com)

xcopy  /s  "C:\\program  files"  "d:\"

1.不是空格&&不是双引号正常打印2—> printf

1..碰到双引号,flag=0

1.碰到空格并且flag==1,换行

2.碰到双引号里面的空格需要打印,

两种打印情况,一种换行

import java.util.*;
public
class
Main
{
public
static
void
main(String[]
args){
Scanner
sc=new
Scanner(System.in);
String
str=sc.nextLine();
int
count=0;
for(int
i=0;i<str.length();i++){
//如果碰到双引号,我们就需要i++直到找到下一个双引号
if(str.charAt(i)=='"'){
do{
i++;
}while(str.charAt(i)!='"');
}
if(str.charAt(i)=='
'){
count++;
}
}
System.out.println(count+1);

int flag=1;
for(int i=0;i<str.length();i++){
//遇到第一个双引号,flag变为0,
//遇到第二个双引号结束后flag重新变为1
//只要在打印双引号中的内容的时候flag的值始终为0
if(str.charAt(i)=='"'){
flag^=1;
}
//除了双引号和特殊空格以外的字符都要打印
if(str.charAt(i)!=' '&&str.charAt(i)!='"'){
System.out.print(str.charAt(i));
}
//双引号中的空格需要打印
if(str.charAt(i)==' '&&flag==0){
System.out.print(str.charAt(i));
}
//双引号外碰到空格,需要换行
if(str.charAt(i)==' '&&flag==1){
System.out.println();
}
}
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值