public class Main { //参数解析 public static void main(String[] args) {
Scanner scanner=new Scanner(System.in );
String str=scanner.nextLine();
int count=0; //计算空格的个数//参数的总个数=空格个数+1
复制代码
for (int i = 0; i < str.length(); i++) {
//遇到左引号的时候,要一直遍历,直到遇到右引号//这样才说明,双引号中的参数遍历完了if (str.charAt(i) =='"'){//左引号do {
i++;
}while (str.charAt(i)=='"');
}
//碰到双引号以外的空格,count++if (str.charAt(i)==' '){
count++;
}
}
//参数的总个数=空格个数+1System.out.println(count+1);
int flag=1;
for (int i = 0; i < str.length(); i++) {
//当碰到左引号的时候,falg变为0,当碰到右引号的时候,flag变为1 //说明在flag==0的时候,我们一直在遍历双引号当中的参数if (str.charAt(i)=='"'){
flag^=1;
//将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();
}
}
}
}
//xcopy /s c:\\\\ d:\\\\e
输入描述:输入为一行,有两个整数N,M,以空格隔开。 (4 ≤ N ≤ 100000) (N ≤ M ≤ 100000)
输出描述:输出小易最少需要跳跃的步数,如果不能到达输出-1
复制代码
public class Main2 {
//跳石板public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int m=scanner.nextInt();
//有m块石板,为了将石板的编号,与数组的下标对应在一起,所以,定义数组的长度为m+1int[] step=new int[m+1];
for (int i = 0; i < m+1; i++) {
step[i]=Integer.MAX_VALUE;//赋初始值}
//从第n块石板开始跳跃step[n]=0;
for (int i = n; i < m; i++) {
if (step[i]==Integer.MAX_VALUE){
//如果是最大值,那么,没有办法跳跃到该位置处continue;
}
//i代表当前石板的编号List<Integer> list=div(i);
//j代表一次可以跳几块石板
复制代码
复制代码
for (int j:list) {
if (i+j<=m && step[i+j]!=Integer.MAX_VALUE){
step[i+j]=Math.min(step[i+j],step[i]+1);
//最小值}else if (i+j<=m){
step[i+j]=step[i]+1;
}
}
}
if (step[m]==Integer.MAX_VALUE){
System.out.println(-1);
}else {
System.out.println(step[m]);
}
}
//求i的约数 ,List\<Integer\>相当于一个数组,用来存放约数public static List<Integer> div(int num){
List<Integer> list=new ArrayList<>();
for (int i = 2; i*i <= num; i++) {
if (num % i ==0){
list.add(i);
//与i相对应的num/i也是约数,但是需要注意的是i不能相同!!if (num/i !=i){
list.add(num/i);
}
}
}
return list;
}
}