每日java5-16

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+“列”);

}

}

  1. 数组中出现次数超过一半的数字

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];

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值