1、HJ74 参数解析
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
if(str.charAt(i)=='"'){
do{
i++;
}while(str.charAt(i)!='"');
}
if(str.charAt(i)==' '){
count++;
}
}
System.out.println(count+1);
int flag=0;
for(int i=0;i
if(str.charAt(i)=='"'){
flag=flag^1;
//从flog为1到flag为0(为1)这个时间段遍历字符串,都是在双引号里面,直接打印即可
}
if(str.charAt(i)!=' '&&str.charAt(i)!='"'){
System.out.print(str.charAt(i));
}
if(str.charAt(i)==' '&&flag==1){
System.out.print(str.charAt(i));
}
if(str.charAt(i)==' '&&flag==0){
System.out.println();
}
}
}
}
2、WY28 跳石板
import java.util.*;
public class Main {
public static ArrayList
ArrayList
for(int i=2;i*i<=n;i++){
if(n%i==0){
list.add(i);
if(n/i!=i){
list.add(n/i);
}
}
}
return list;
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
int[] tmp=new int[m+1];
for(int i=0;i
}
tmp[n]=0;//n石板跳到n石板需要跳0步
for(int i=n;i
if(tmp[i]==Integer.MAX_VALUE){
continue;//跳不到的石板
}
//i代表的是石板号
//j代码跳多少个石板
ArrayList
for(int j:list){
if(i+j<=m&&tmp[i+j]!=Integer.MAX_VALUE){//已经跳过了,并标记了当时跳到i+j编号的石板时需要多少步,即tmp[i+j]!=Integer.MAX_VALUE
tmp[i+j]=Math.min(tmp[i]+1,tmp[i+j]);//这时就要比较已经有的数组值和i下标的数组值(跳到i石板需要的次数)加1的值,谁更小,取最小的,就是需要跳到i+j石板下次数最小
}else if(i+j<=m){
tmp[i+j]=tmp[i]+1;//没有改变数组值第一次跳到此处石板,直接把i下标的数组值+1
}
}
}
if(tmp[m]==Integer.MAX_VALUE){
System.out.println(-1);
}else{
System.out.println(tmp[m]);
}
}
}
石板4跳到24的列子如下:
上面为数组下标,下面为可能数组的值(跳到该石板时要的次数),如4跳到6需要跳一次(一次跳两格)



