import java. awt. *;
import java. awt. event. *;
import javax. swing. *;
import java. applet. *;
import java. util. *;
public class Ex0509 extends Applent implements Actionlistener
JTextArea textA=new JTextArea(5, 25 ) ;
JButton button1=new JButton("求和" ) ;
JButton button2=new JButton("求平均值") ;
JLabel label=new JLabel("结果: ", JLahel. RIGHT) ;
JTextField text=new JTextField(15) ;
public void init()
{
setSize(400, 200) ;
setBackground(Color. blue) ;
JPanel panButt=new JPanel(new GridLayout(1, 2) ) ;
panButt. add(button1) ;
panButt. add(button2) ;
button1. addActionListener(this) ;
button2. addActionListener(this) ;
JPanel panResult=new JPanel(new GridLayout(1, 2) ) ;
panResult. add(label) ;
panResult. add(text) ;
add(textA. ;
add(panButt) ;
add(panResult) ;
}
public void actionPerformed (ActionEvent e)
{
//这里是你编写的代码
}
}
分别采用如下3种方法编写计算最大公约数的函数Ged(),在主函数中调用该函数计算并输出从键盘任意输入的两整数的最大公约数。
(1)穷举法 ,由于a阳的最大公约数不可能比a和b中的较小者还大,否则一定不能整除它,因此,先找到,a和b中中的较小者t,然后从t开始逐次减I尝试每种可能.即检验t到I之间的所有整数,第一个满足公约数条件的t就是和b的最大公约数。
(2)欧几里得算法,也称辗转相除法、对正整数a和b,连续进行求余运算,直到余数为0为止.此时非0的除数就是最大公约数。设r=a mod b表示a除以上的余数,若r≠0将b作为新的a,r作为新的b,即Ged(a,b)=Ged(b,r),重复a mod b运算,直到r=0为止,此时b为所求的最大公约数。例如,50和15的最大公约数的求解过程可表示为:Ged(50,15)=Ged(15,5)=Ged(5,0) =5。
(3)递归方法。对正整数a和b,当a>b时,若a中含有与b相同的公约数,则a中去掉b后剩余的部分a-b中也应含有与b相同的公约数,对a-b和b计算公约数就相当于对a和b计算公约数。反复使用最大公约数的如下3条性质,直到a和b相等为止,这时,a或b就是它们的最大公约数。
性质1如果a>b, 则a和b与a-b和b的最大公约数相同, 即Ged(a,b)=Ged(a-b,b)
性质2如果b>a, 则a和b与a和b-a的最大公约数相同, 即Ced(a,b)=Ged(a,b-a)
性质3如果a=b, 则a和b的最大公约数与a值和b值相同, 即Ged(a,b)=a=b
例如,求72和40的最大公因数,即计算GCD(724,344):
GCD(724,344)=GCD(344,724%344)=GCD(344,36)
=GCD(36,344%36)=GCD(36,20)
=GCD(20,36%20)=GCD(20,16)
=GCD(16,20%16)=GCD(16,4)
=GCD(4,16%4)=GCD(4,0)
=4
算法设计:对于给定的外籍飞行员与英国飞行员的配合情况,找出个最佳飞行员配对方案,使皇家空军一次能派出最多的飞机.
数据输入:由文件input.txt提供输入数据.文件第1行有两个止整数m和n.n是皇家空军的飞行员总数(n<100);m是外籍飞行员数.外籍飞行员编号为1~m;英国飞行员编号为m+1~n.接下来每行有两个正整数i和j,表示外籍飞行员i可以和英国飞行员j配合.文件最后以两个-1结束.
结果输出:将最佳飞行员配对方案输出到文件output.txt.第1行是最佳飞行员配对方案一次能派出的最多的飞机数M.接下来的M行是最佳飞行员配对方案.每行有两个正整数i和j,表示在最佳飞行员配对方案中,飞行员i和飞行员j配对.
如果所求的最佳飞行员配对方案不存在,则输出“NoSolution!".
问题描述:给定两个n×n矩阵A和B,试设计一个判定A和B是否互逆的蒙特卡罗算法(算法的计算时间应为O(n2).
算法设计:设计一个蒙特卡罗算法,对于给定的矩阵A和B,判定其是否互逆.
数据输入:由文件input.txt给出输入数据.第1行有1个正整数n,表示矩阵A和B为n×n矩阵.接下来的2n行,每行有n个实数,分别表示矩阵A和B中的元素.
结果输出:将计算结果输出到文件output.txt.若矩阵A和B互逆,则输出“YES",否则输出“NO".