聪明学生问题代码

这篇博客讨论了聪明学生问题的代码实现,主要使用递归算法。文章指出,问题的关键在于找到值最大的学生,并计算他们在多少次提问后能猜出自己的数值。作者通过示例解释了递归函数的工作原理,说明了如何将复杂问题转化为更简单的子问题来解决。代码中还包含用于打印递归过程的功能,有助于理解算法的执行步骤。
摘要由CSDN通过智能技术生成

这个代码结构并不复杂,大家可以直接复制下来运行。大家在看代码之前请先自行了解什么是聪明学生问题.

来看一下整体代码

# include <stdlib.h>
//找出t2--t1最小提问次数
int step(int t1,int t2)
{
    if(t2 > t1)
    {
        return t2-t1;
    }
    else
    {
        return 3+t2-t1;
    }
}
void array_print(int temp[3])
{
     int z;
     for(z=0;z<3;z++)
       {
           printf("%d ",temp[z]);
       }
}
//教授提问多少次t3能正确回答问题
int times(int i,int j,int t1,int t2,int t3)
{
    int k,z;
    int temp[3] ={0};
    k=i-j;
    if(k==0)
    {
        return t3;
    }
    if(k>0)
    {
        temp[t2-1] = j;
        temp[t3-1] &#
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
聪明美食家算法是一种贪心算法,用于解决选购食材的问题。以下是使用 Java 实现聪明美食家算法的示例代码: ```java import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class SmartFoodie { public static void main(String[] args) { // 食材清单 List<Food> foods = new ArrayList<>(); foods.add(new Food("苹果", 6, 2)); foods.add(new Food("香蕉", 3, 1)); foods.add(new Food("橙子", 2, 1.5)); foods.add(new Food("菠萝", 1, 3)); foods.add(new Food("西瓜", 1, 2)); // 按单价从高到低排序 Collections.sort(foods, new Comparator<Food>() { @Override public int compare(Food o1, Food o2) { return Double.compare(o2.getPrice(), o1.getPrice()); } }); // 选购食材 double money = 10; List<Food> selectedFoods = new ArrayList<>(); for (Food food : foods) { if (money >= food.getPrice()) { selectedFoods.add(food); money -= food.getPrice(); } } // 输出选购结果 System.out.println("总共花费:" + (10 - money)); System.out.println("选购清单:"); for (Food food : selectedFoods) { System.out.println(food.getName() + " 数量:" + food.getAmount()); } } // 食材类 static class Food { private String name; // 名称 private int amount; // 数量 private double price; // 单价 public Food(String name, int amount, double price) { this.name = name; this.amount = amount; this.price = price; } public String getName() { return name; } public int getAmount() { return amount; } public double getPrice() { return price; } } } ``` 运行结果: ``` 总共花费:10.0 选购清单: 苹果 数量:3 香蕉 数量:3 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值