2023年3月

一、什么是质数?

就是一个数,除1和它本身以外没有别的因子,这种数称为质数。

二、质数的实现。

importjava.util.Scanner;public classprime {public static voidmain(String[] args){
Scanner sc
=newScanner(System.in);boolean prime=true;int n=sc.nextInt();if(n==1){
System.out.printf(
"error");
}
else{for(int i=2;i*i<=n;i++){if(n%i==0){
prime
=false;break;
}
}
if(prime){
System.out.printf(
"%d is prime", n);
}
else{
System.out.printf(
"%d is not prime",n);
}
}
}
}

一、问题描述:

就是我们现在输入一些数字,然后我们将输入的数字,倒着再输出出来。实现代码如下:

importjava.util.Scanner;public classni_sort {public static voidmain(String[] args){
Scanner sc
=newScanner(System.in);int n=sc.nextInt();int[] arr=new int[n];for(int i=0;i<n;i++){
arr[i]
=sc.nextInt();
}
for(int i=n-1;i>=0;i--){
System.out.printf(
"%d ",arr[i]);
}
}
}

那么问题来了,如果我们需要将输入的数据进行从小到大,或者从小到大输出,那么我们应该如何处理呢?

importjava.util.Scanner;public classsort1 {public static voidmain(String[] args){
Scanner sc
=newScanner(System.in);int n=sc.nextInt();int[] arr=new int[n];for(int i=0;i<n;i++){
arr[i]
=sc.nextInt();
}
for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if(arr[i]>arr[j]){int t=arr[i];
arr[i]
=arr[j];
arr[j]
=t;
}
}
}
for(int i=0;i<n;i++){
System.out.printf(
"%d ",arr[i]);
}
}
}

当然,再这个问题上我们也可以直接使用相应的API(sort)来实现。

importjava.util.Scanner;importjava.util.Arrays;public classsort1 {public static voidmain(String[] args){
Scanner sc
=newScanner(System.in);int n=sc.nextInt();
Integer[] q
=newInteger[n];for(Integer i=0;i<n;i++){
q[i]
=sc.nextInt();
}
Arrays.sort(q,(x,y)
->{return x-y;
});
System.out.println(Arrays.toString(q));
}
}

一、蛇形矩阵是什么?如下图所示:

二、思路解释:首先根据这个样式,我们会想到使用数组的方法进行求解。把这个放在思路放在矩阵中,我们就会想到值是连续的,我们直接修改数组的下标使得相应的值赋在指定的位置就好了。那么问题就来了,这个应该如何实现呢?首先我们仔细观察一下,就会发现:

以左上角为起点,然后向右移动,行数不变,列数+1(0,1)。下移:行数+1,列数不变(1,0)。左移:行数不变,列数-1(0,-1)。上移:行数+1,列数不变(-1,0)。

然后按照上述的步长来进行矩阵位置的确定。然后我们现在还有另外一个需要解决的问题,就是什么时候矩阵开始换方向。

我们观察一下,就会得出结论:

当我们的矩阵下一步运算会突破矩阵界限,或者下一步运算的位置已经存有值了,那么我们就应该换向。

三、代码实现:

importjava.util.Scanner;public classsnake_arr {public static voidmain(String[] args){
Scanner sc
=newScanner(System.in);int n=sc.nextInt(),m=sc.nextInt();int[][] res=new int[n][m];int[] dx={-1,0,1,0},dy={0,1,0,-1};int x=0,y=0,d=1;for(int i=1;i<=n*m;i++){
res[x][y]
=i;int a=x+dx[d],b=y+dy[d];if(a<0||a>=n||b<=0||b>=m||res[a][b]>0){
d
=(d+1)%4;
a
=x+dx[d];
b
=y+dy[d];
}
x
=a;
y
=b;
}
for(int[] row:res){for(intval:row){
System.out.printf(
"%d ",val);
}
System.out.println();
}
}
}

一、问题描述:
循环相克令是说有两个人在玩游戏,分别出猎人、枪、狗熊中的一个,其中猎人胜枪,枪胜狗熊,狗熊胜猎人。他们两个人进行若干次比赛,然后我们判断一下每次的胜负。

二、实现思路:

首先我们得定下应该执行多少轮比赛,然后判断每次的胜负。如果我们将每次输入的实际值都作比较的话,我i们得进行9次比较,这个是比较麻烦的。我们可以选择一个较优解,就是我们设置输入为猎人时,值为0.狗熊是1,枪是2.然后因为有(play1+1)==play2的关系下,play2赢,然后我们就可以这样写代码了。如果我们有好几个手势的话,我们也可以照这样写,会方便很多。

三、实现代码:

importjava.util.Scanner;public classwin_or_fail {public static voidmain(String[] args){
Scanner sc
=newScanner(System.in);int N=sc.nextInt();while(N-->0){intx,y;
String s1
=sc.next(),s2=sc.next();if(s1.equals("Hunter")){
x
=0;
}
else if(s1.equals("Bear")){
x
=1;
}
else{
x
=2;
}
if(s2.equals("Hunter")){
y
=0;
}
else if(s2.equals("Bear")){
y
=1;
}
else{
y
=2;
}
if(x==y){
System.out.println(
"Tie");
}
else if((x+1)%3==y){
System.out.println(
"Player2");
}
else{
System.out.println(
"Player1");
}
}

}
}

一、问题描述

我们现在输入了一个字符串,然后可能在一些情况下,我们需要将字符串中的每一个字符拿空格隔开,那么这种样式应该如何实现呢?

二、实现思路

我们直接将字符串变成数组的样子(使用toCharArray这个API),然后将每个元素换个格式输出来。

三、实现代码

importjava.util.Scanner;public classadd_space1 {public static voidmain(String[] args){
Scanner sc
=newScanner(System.in);
String str
=sc.next();for(charc:str.toCharArray()){
System.out.printf(
"%c ",c);
}
}
}

当然,一些人可能会有疑问,讲原本是想获取一个字符串,我们直接吧字符串数出来就好了。这个当然也是可以的。我们现在就把它实现出来。实现代码如下:

importjava.util.Scanner;public classadd_space1 {public static voidmain(String[] args){
Scanner sc
=newScanner(System.in);
String str
=sc.next();
String str1
="";for(charc:str.toCharArray()){
str1
+=c;
str1
+=" ";
}
System.out.printf(
"%s",str1);
}
}