Zonk!计算机策略决策者设计和逻辑

时间:2018-07-12 18:37:34

标签: algorithm

我对算法有疑问。我有一个名为computer_strategy_decider的函数,它需要6个骰子(数字)并确定要保留的骰子和重新滚动的骰子。

您可能需要考虑功能说明和评分部分:

  

computer_strategy_decider() –此函数将决定使用哪种评分策略。在   总结,计算机将始终保持安全,并具有非常简单的策略。电脑   始终会选择能给她最高分的策略(请参阅得分部分)。它会   检查所有策略,并确定哪个策略会给她最高分。例如,如果   骰子如下所示:1,2,3,4,5,6那么就不需要检查其他策略了   得分为1500。如果得分如下1、1、1、5、5、5,则计算机将保留前三个   并滚动最后三个,因为这会给她1000分,而不是保持5,5,5   会给她500。

计分规则:

  
      
  1. 每5点可得50分。
  2.   
  3. 每1点可得100分。
  4.   
  5. 一次进行一次三分一掷的价值相当于单个骰子面值的100倍。 (例如。,   三个三的价值200,三个三个的价值300,三个四个的价值400,三个   5个的价值500,三个6的价值600),除了3个价值500   1000(注意:它们不必连续)。
  6.   
  7. 六个类别(例如4 4 4 4 4 4,5、5、5、5、5、5,...)的总价值为1000分。
  8.   
  9. 直线(1、2、3、4、5、6)的总价值为1500点(不需要按此顺序),因为   例如3、2、1、6、5、4)。
  10.   

还:

  

掷骰子时,只能使用上述之一进行评分。取决于   保留的骰子数量,其中一项策略是得分。例如,如果用户滚动“ 1 1   1 1 1 1”,他们决定保留其中的1个,其余的再滚动一次,他们将获得100分。如果   他们决定保留其中的3个,然后再滚动其他3个,他们将获得1000分。如果他们   决定保留全部,那么他们将获得1000分。请参阅“ computer_strategy_decider”   下面的功能定义,说明计算机将如何决定使用哪种策略。

我希望在解决此问题方面有所帮助,以便能够编写此函数来解决我的问题。

int computer_stategy_decider(int csd_d1 , int csd_d2 ,int csd_d3 ,int csd_d4 ,int csd_d5 , int csd_d6){
int csd_result;

if(csd_d1+csd_d2+csd_d3+csd_d4+csd_d5+csd_d6==21){
    csd_result=1500;
    printf("I stop and Kept dices 1 2 3 4 5 6\nMy score: %d",csd_result);
}
else if(){}

我能想到的唯一想法是,将所有情况下无法使用的骰子加起来,只有6种。 111-111 | 222-222 | 333-333 | 444-444 | 555-555 | 666-666和123-456。

0 个答案:

没有答案