蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
例如,当输入5时,应该输出的三角形为:
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
输入描述:
输入正整数N(N不大于100)
输出描述:
输出一个N行的蛇形矩阵。
package com.huawei.Test;
/**
* @author h84250472
* @title: Test08$
* @description: TODO
* @date 2022/8/2 17:26
*/
import java.util.*;
public class Test08 {
public static void main(String args[]) {//主方法,主要就是接收数据
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int num = sc.nextInt();
printtriangle(num);
}
}
public static void printtriangle(int num) { //输出方法输出蛇形矩阵
int y = 1;//列的方向第一个肯定是1
int yCount = 1;//列由上往下是等差数列,第一行和第二行差1
for (int i = 1; i <= num; i++) {//行的循环次数
int x = y;//第i行的第一个数就是列的第i个数
int xCount = i + 1; //可以看到第i行第一个加数刚好是i+1
for (int j = 1; j <= num - i + 1; j++) { //列的循环次数,每次少一列
System.out.print(x + " ");//循环输出x
x += xCount++; //等差数列每次+1
}
System.out.println("");//换行
y += yCount++; //等差数列每次加1
}
}
}
描述
输入n个整数,找出其中最小的k个整数并按升序输出
本题有多组输入样例
数据范围:1 \le n \le 1000 \1≤n≤1000 ,输入的整数满足 1 \le val \le 10000 \1≤val≤10000
输入描述:
第一行输入两个整数n和k
第二行输入一个整数数组
输出描述:
从小到大输出最小的k个整数,用空格分开。
示例1
输入:
5 2 1 3 5 7 2
复制输出:
1 2
package com.huawei.Test;
/**
* @author h84250472
* @title: Test08$
* @description: TODO
* @date 2022/8/2 17:26
*/
import java.util.*;
public class Test08 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
int k = sc.nextInt();
int[] arr = new int[n];
for(int i = 0; i<n ;i++){
arr[i] = sc.nextInt();
}
Arrays.sort(arr);
for(int i = 0; i<k ;i++){
System.out.print(arr[i] + " ");
}
}
}
}
描述
输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
保证输入的整数最后一位不是 0 。
数据范围: 1 \le n \le 10^{8} \1≤n≤108
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
示例1
输入:
9876673
复制输出:
37689
package com.huawei.Test;
/**
* @author h84250472
* @title: Test08$
* @description: TODO
* @date 2022/8/2 17:26
*/
import java.util.*;
public class Test08 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
StringBuilder sb = new StringBuilder();
String result = "";//不能等于null,等于null会出现空指针错误,因为等于null时,对象不存在
for(int i = 0; i<str.length();i++){
if(!result.contains(str.charAt(i)+"")){
result+=str.charAt(i);
}
}
sb.append(result);
System.out.println(sb.reverse().toString());
}
}
描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
数据范围:输入的字符串长度满足 1 \le n \le 1000 \1≤n≤1000
注意本题有多组输入
输入描述:
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述:
得到逆序的句子
示例1
输入:
I am a boy
复制输出:
boy a am I
package com.huawei.Test;
/**
* @author h84250472
* @title: Test08$
* @description: TODO
* @date 2022/8/2 17:26
*/
import java.util.*;
public class Test08 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
StringBuilder sb = new StringBuilder();
String[] words = str.split(" ");
for(int i = words.length-1;i>=0;i--){
sb.append(words[i]+" ");
}
System.out.println(sb.toString().trim());
}
}