if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
sum++;
}}}System.out.println(sum);}}
9、田忌赛马
你一定听过田忌赛马的故事吧?
如果3匹马变成1000匹,齐王仍然让他的马按从优到劣的顺序出赛,田忌可以按任意顺序选择他的赛马出赛。
赢一局,田忌可以得到200两银子,输一局,田忌就要输掉200两银子,平局的话不输不赢。
请问田忌最多能赢多少银子?
输入:
输入包含多组测试数据,每组测试数据的第一行是一个整数n(1<=n<=1000),表示田忌和齐王都拥有n匹马。
接下来一行是n个整数,表示田忌的马的速度,下一行也是n个整数,表示齐王的马的速度。
输入的最后以一个0表示结束。
输出:
对每组数据,输出一个整数,表示田忌至多可以赢多少银子,如果田忌赢不了,就输出一个负数,表示田忌最少要输多少银子。
样例输入:
3
928371
958774
2
2020
2020
2
2019
2218
0
样例输出:
200
0
0
import java.util.Scanner;
public class test9 {
public static void main(String[] args)
{int n;
Scanner in=new Scanner(System.in);
n=in.nextInt();
int[]x=new int[n];
int[]y=new int[n];
for (int i = 0; i < n; i++) {
y[i]=in.nextInt();}
for (int j = 0; j < n; j++) {
x[j]=in.nextInt();
}int sum=0;
int k=n-1;int j=0;
for (int i = 0; i < n; i++) {
if(j>k)
break;if(x[i]>=y[j]){
k--;sum--;
}else{j++;sum++;}
}System.out.println(200*sum);}}
10矩阵连乘问题
给定n个矩阵{A1,A2,...,An},考察这n个矩阵的连乘积A1A2...An。
由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序,这种计算次序可以用加括号的方式来确定。
矩阵连乘积的计算次序与其计算量有密切关系。
例如,考察计算3个矩阵{A1,A2,A3}连乘积的例子。
设这3个矩阵的维数分别为10*100,100*5,和5*50。
若按(A1A2)A3计算,3个矩阵连乘积需要的数乘次数为10*100*5+10*5*50=7500。
若按A1(A2A3)计算,则总共需要100*5*50+10*100*50=75000次数乘。
现在你的任务是对于一个确定的矩阵连乘方案,计算其需要的数乘次数。
Input
输入数据由多组数据组成。
每组数据格式如下:
第一行是一个整数n(1≤n≤26),表示矩阵的个数。
接下来n行,每行有一个大写字母,表示矩阵的名字,后面有两个整数a,b,分别表示该矩阵的行数和列数,其中1第n+1行是一个矩阵连乘的表达式,由括号与大写字母组成,没有乘号与多余的空格。
如果表达式中没有括号则按照从左到右的顺序计算,输入的括号保证能够配对。
Output
对于每组数据,输出仅一行包含一个整数,即将该矩阵连乘方案需要的数乘次数。
如果运算过程中出现不满足矩阵乘法法则的情况(即左矩阵列数与右矩阵的行数不同),则输出“error”。
SampleInput
3
A10100
B1005
C550
A(BC)
SampleOutput
75000