java和数学

虽然刚学JAVA,但已经开始感到数学功底的不足了。本来JAVA 就已经很不容易学了,还得把数学学好,
真的很让人头痛啊,想写个程序却找不出个好的算法,真的很让人郁闷那。
 
常胜将军:
现有 21 根火柴,两人轮流取,每人每次可以取走 1 4 根,不可多取,也不能不取,谁取最后一楰火柴谁输。请编写一个程序进行人机对弈,要求人先取,计算机后取;计算机一方为“常胜将军”;
 
学过C语言的应该知道这道题吧,其中的算法是很简单的,只要电脑取的数等于5-x(x为人取走的数),就能够取得常胜,可是当我自己想的时候却完全走偏了路,感觉自己挺笨的。下面是用JAVA实现的常胜将军的代码:
import java.util.*;
public class 常胜将军 {
    int x;        //人选取的数
    int a=21;
    int y;          //电脑选取的数
    public void test()
    {
     while(a>0)
     {
      if(a==1)break;
      try
      {
      Scanner in = new Scanner(System.in);
      x=in.nextInt();
      if(x<1||x>4)throw new InputMismatchException();    //人输入是否正确,错则抛出异常
      a=a-x;
      System.out.println("你输入了"+x+"/n还剩"+a);
      y=5-x;                                          //算法核心
      a=a-y;                                            
      System.out.println("电脑选取了"+y+"/n还剩"+a);
      //if(a==1)break;
      }catch(InputMismatchException e)
      {
       System.out.println("异常,输入有误,重输");
          test();                            
      }
     }
    }
    public static void main(String[]args)
    {
     System.out.println("人先取");
     new 常胜将军().test();
     System.out.println("你输了!!!");
     
    }
}
 
的确是很简单的算法。
下面还有一些小题目,有兴趣的尝试一下吧:
。。。。。。。。。。。。。。。。。。。。。。。。。

1:这是中国民间的一个游戏。两人从1开始轮流报数,每人每次可报一个数或两个连续的数,谁先报到30,谁就为胜方。

2:

在图中的九个点上,空出中间的点,其余的点上任意填入数字18;1的位置固定不动,然后移动其余的数字,使18顺时针从小到大排列.移动的规律是:只能将数字沿线移向空白的点.

请编程显示数字移动过程。

3:

验证尼科彻斯定理任何一个整数的立方都可以写成一串连续奇数的和。××

4:

N是一个四位数,它的9倍恰好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。例如:1234的反序数是4321

。。。。。。。。。。。。。。。。。。。。。。。。。。

 

问过一些大二的学长,听他们说,离数挺重要的,可我学的稀里糊涂的啊。

三门数学课,高数,线数,离数,学的我头大啊。

有同感的同学们都出来抱怨下吧,憋疯了!!!!

抱怨完了,一起努力吧。

学好数学吧,进书堆了,误扰。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值