算法练习题

算法练习题

1.百钱百鸡

	/** 百钱百鸡
      100元买100只鸡,钱花完。
      已知公鸡1只5元,母鸡1只3元,小鸡3只1元
   */
   void buyChicken() {
   
      int count = 0;    //总数
      for (int cock = 1; cock <= 20; cock++) {
      //公鸡能买的个数
         for (int hen = 1; hen <= (100 - 5 * cock); hen++) {
       //买了公鸡的前提下,母鸡个数
            for (int chick = 1; chick <= (100 - 5 * cock - 3 * hen); chick++) {
        //买了公鸡、母鸡的前提下,小鸡个数
               if (cock + hen + chick * 3 == 100) {
   
                  System.out.println("公鸡" + cock + "  \t母鸡" + hen + "  \t小鸡" + chick * 3 + "  \t第" + (++count));
                  break;
               }
            }
         }
      }
   }



2.字符串中出现最多的字符

/*
      输入一个字符串,
      找出出现次数最多的字符,及其个数。
   */
   void charactersNumber() {
   
      Scanner sc = new Scanner(System.in);
      System.out.println("请输入一段字符串:");
      String str = sc.nextLine();

      char m = str.charAt(0); // 假设第一个出现的字符即最多
      int s = 1;   // 字符出现的次数

      String tc = "";  // (临时记录)每个被记录的字符
      int t;   // 记录每个字符出现的次数

      for (int i = 0; i < str.length(); i++) {
   
         if (i != 0 && str.charAt(i) == m)
            continue;
         else
            tc += str.charAt(i);

         t = 1;
         for (int j = i + 1; j < str.length() - 1; j++) {
   
            if (str.charAt(j) == str.charAt(i))
               t++;
         }
         if (t >= s) {
   
            s = t;
            m = str.charAt(i);
         }
      }
      System.out.println(m + "\t" + s);
      sc.close();
   }



3.扑克牌组合(东方博宜OJ -1334)

/*
      从一副扑克牌中(没有大小王,J认为是数字11,Q是12,K是13,A是1)抽出2张牌求和,请问能够组合出多少个不相等的数,按照由小到大输出这些数。
      输入:
         第一行是一个整数n代表(n<=52)扑克牌的总数量
         第二行的n个整数分别代表扑克牌的数值
      输出:
         第一行是一个整数m代表组合出不相等的数字个数。
         第二行m个数用空格隔开代表这m个由小到大排序的不相等的数。
    */
   void playingCards() {
   
      Scanner sc = new Scanner(System.in);
      System.out.println("请输入牌数:");
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值