76.求两个子串的最大公共序列长度
import
java.util.Scanner;
public class PaiLie {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
System.out.println(“输入两个字符串:”);
String s1=sc.nextLine();
String s2=sc.nextLine();
int k=f(“abc”,“xbacd”);
System.out.print(k);
}
public static int f(String s1,String s2){
//当其中任何一个串为空时,则两个串的最大公共子序列的长度为0
if(s1.length()==0||s2.length()==0)
return 0;
//当首字母相等的时候,对剩下的串求其最长公共子序列后 再加1.
if(s1.charAt(0)==s2.charAt(0))
return f(s1.substring(1),s2.substring(1))+1;
else //当首字母不相等的时候f(s1.substring(1),s2)
f(s1,s2.substring(1))
return Math.max(f(s1.substring(1),s2),f(s1,s2.substring(1)));
}
}
77.矩阵的对角矩阵。
public class JuZhen {
public static void main(String[] args) {
int [][] a= {{1,2,3},{2,3,4},{3,4,5}};
for(int i=0;i<a.length;i++) {
for(int j=0;j<a[0].length;j++) {
System.out.print(a[i][j]+" ");
}
System.out.println();
}
int [][] b=new int[a.length][a[0].length];
for(int i=0;i<a.length;i++) {
for(int j=0;j<a[0].length;j++) {
if(i==j) {
b[i][j]=a[i][j];
}
}
}
System.out.println();
for(int i=0;i<b.length;i++) {
for(int j=0;j<b[0].length;j++) {
System.out.print(b[i][j]+" ");
}
System.out.println();
}
}
}
78.二维数组的最大值最小值。
public class JuZhen {
public class JuZhen {
public static void main(String[] args) {
int [][] a= {{1,2,3},{2,9,4},{3,4,0}};
for(int i=0;i<a.length;i++) {
for(int j=0;j<a[0].length;j++) {
System.out.print(a[i][j]+" ");
}
System.out.println();
}
int max=a[0][0];
int min=a[0][0];
int rowx=0,columx=0, rown=0,column=0;
for(int i=0;i<a.length;i++) {
for(int j=0;j<a[0].length;j++) {
if(a[i][j]>max) {
max=a[i][j];
rowx=i;
columx=j;
}
if(a[i][j]<min) {
min=a[i][j];
rown=i;
column=j;
}
}
}
System.out.println(“max=”+max+",它在第"+rowx+“行”+columx+“列,min=”+min+",它在"+rown+“行”+column+“列”);
}
}
- 数组中出现次数超过一半的数字
import
java.util.Scanner;
public class ShuZu {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println(“输入数组长度:”);
int n=sc.nextInt();
int [] a=new int[n];
System.out.println(“输入数组:”);
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
}
solution(a);
}
public static void solution(int [] a) {
int result=a[0];
int count=1;
for(int i=1;i<a.length;i++) {
if(a[i]==result) {
count++;
}else {
count–;
}
if(count==0) {
result=a[i];
count=1;
}
}
if(count>a.length/2) {
System.out.println(“超过一半的数为:”+result+“出现了”+count+“次”);
}else {
System.out.println(“没有符合条件的数”);
}
}
}
80.合并两个数组
import
java.util.Scanner;
public class MaxziDuan {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println(“请输入a数组的长度:”);
int n=sc.nextInt();
int[] a=new int[n];
System.out.println(“请输入a数组:”);
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
}
System.out.println(“输入b数组的长度:”);
int m=sc.nextInt();
int [] b=new int[m];
System.out.println(“输入b数组:”);
for(int i=0;i<m;i++) {
b[i]=sc.nextInt();
}
int x=m+n;
int [] c=new int[x];
HeBing(a,b,c);
System.out.println(“输入合并后的数组:”);
for(int i=0;i<c.length;i++) {
System.out.print(c[i]+" ");
}
}
public static void HeBing(int [] a,int [] b,int [] c) {
int i=0;
int j=0;
int k=0;
while(i<a.length&&j<b.length) {
if(a[i]<b[j]) {
c[k++]=a[i];
i++;
}else if(a[i]==b[j]) {
c[k++]=a[i];
i++;
}else {
c[k++]=b[j];
j++;
}
}
if(i==a.length) {
for(int m=j;m<b.length;m++) {
c[k++]=b[m];
}
}
if(j==b.length) {
for(int m=i;m<a.length;m++) {
c[k++]=a[m];
}
}
}
}