| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1437 人关注过本帖
标题:围棋:如何确定还需几连胜升一段或几连败降一段
只看楼主 加入收藏
自学的数学
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:30
帖 子:794
专家分:3355
注 册:2017-11-15
结帖率:96.15%
  已结贴   问题点数:20  回复次数:13   
围棋:如何确定还需几连胜升一段或几连败降一段
围棋规则:(5段~9段)(最近20局之内)  
   20战20胜0败胜率100% 升2段  
   20战15胜5败胜率75%以上升1段  
   20战7胜13败胜率35%以下降1段  
   20战3胜17败胜率15%以下降2段  
(1段~4段)(最近20局之内)  
   20战18胜2败胜率90%以上升2段  
   20战14胜6败胜率70%以上升1段  
   20战6胜14败胜率30%以下降1段  
   20战2胜18败胜率10%以下降2段

级(18级~1级)(最近15局之内)  
   15战14胜1败胜率90%以上升2级  
   15战10胜5败胜率65%以上升1级  
   15战4胜11败胜率30%以下降1级  
   15战1胜14败胜率10%以上降2级
最高级别为9段,9段赢棋后不能再升级了。
最低级别为18级,18级输棋后不能再降级了。
1段降级后为1级,1级降级后为2级。。。。。。直到降级到18级为止。


问题:某个棋手想根据自己已经下的棋局输赢情况,想查看自己还需几连胜升一段(级)或几连败降一段(级)。
请问可以如何实现他的愿望。
搜索更多相关主题的帖子: 规则 高级 级别 升级 查看 
2018-07-15 13:22
自学的数学
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:30
帖 子:794
专家分:3355
注 册:2017-11-15
  得分:0 
如图


这位5段棋手对局情况是:负胜负
根据他的对局情况电脑是如何判断要:14连胜升级1段/不能升2段,11连败降1段/15连败将2段的呢?
同样的道理,这位13级棋手对局情况是:负胜负胜负胜负
根据他的对局情况电脑是如何判断要:7连胜升级1段/不能升2段,7连败降1段/不能升2段的呢?
如何用编程来完成判断情况呢?
附件: 您没有浏览附件的权限,请 登录注册
2018-07-16 15:42
nosnoy
Rank: 8Rank: 8
来 自:mcu
等 级:蝙蝠侠
威 望:9
帖 子:452
专家分:890
注 册:2016-9-17
  得分:0 
先算出 净胜局的最大值 净负局的最大值 ,然后代入就ok了

[此贴子已经被作者于2018-7-16 16:39编辑过]


电闪雷鸣之际 ,当心无杂念,安心渡劫
                                         -18.06.21
2018-07-16 16:25
自学的数学
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:30
帖 子:794
专家分:3355
注 册:2017-11-15
  得分:0 
关键是怎么弄呢?
如何加入到下面的代码里面去呢?
程序代码:
#include <stdio.h>
int main()

 {
    int j = 0;
    printf("请确定棋手的级别:\n");
    printf("1:9段     2:8段    3:7段     4:6段\n");
    printf("5:5段     6:4段    7:3段     8:2段\n");
    printf("9:1段\n");
    printf("10:1级     11:2级    12:3级     13:4级\n");
    printf("14:5级     15:6级    16:7级     17:8级\n");
    printf("18:9级     19:10级   20:11级    21:12级\n");
    printf("22:13级    23:14级   24:15级    25:16级\n");
    printf("26:17级    27:18级\n");
    scanf("%d", &j);
    switch (j)
    {
    case 1:     printf("棋手为:9段\n");           break;
    case 2:        printf("棋手为:8段\n");        break;
    case 3:        printf("棋手为:7段\n");        break;
    case 4:        printf("棋手为:6段\n");        break;
    case 5:        printf("棋手为:5段\n");        break;
    case 6:        printf("棋手为:4段\n");        break;
    case 7:        printf("棋手为:3段\n");        break;
    case 8:        printf("棋手为:2段\n");        break;
    case 9:        printf("棋手为:1段\n");        break;
    case 10:        printf("棋手为:1级\n");        break;
    case 11:        printf("棋手为:2级\n");        break;
    case 12:        printf("棋手为:3级\n");        break;
    case 13:        printf("棋手为:4级\n");        break;
    case 14:        printf("棋手为:5级\n");        break;
    case 15:        printf("棋手为:6级\n");        break;
    case 16:        printf("棋手为:7级\n");        break;
    case 17:        printf("棋手为:8级\n");        break;
    case 18:        printf("棋手为:9级\n");        break;
    case 19:        printf("棋手为:10级\n");        break;
    case 20:        printf("棋手为:11级\n");        break;
    case 21:        printf("棋手为:12级\n");        break;
    case 22:        printf("棋手为:13级\n");        break;
    case 23:        printf("棋手为:14级\n");        break;
    case 24:        printf("棋手为:15级\n");        break;
    case 25:        printf("棋手为:16级\n");        break;
    case 26:        printf("棋手为:17级\n");        break;
    case 27:        printf("棋手为:18级\n");        break;
    }
   return 0;
}


[此贴子已经被作者于2018-7-16 20:31编辑过]

2018-07-16 20:25
nosnoy
Rank: 8Rank: 8
来 自:mcu
等 级:蝙蝠侠
威 望:9
帖 子:452
专家分:890
注 册:2016-9-17
  得分:5 
回复 4楼 自学的数学
胜负分别用1,2表示存储 ,计数 1,2  
假定1的个数为 2  2的个数为 3
选手级别为 13级
则负场最大值为 13 胜场最大数为 12


则选手最多升1级,最低掉一级

电闪雷鸣之际 ,当心无杂念,安心渡劫
                                         -18.06.21
2018-07-16 21:54
自学的数学
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:30
帖 子:794
专家分:3355
注 册:2017-11-15
  得分:0 
怎么弄呢??关键是问题表诉得很清楚,是最近15局(13级的),不是当前共下了15局,就是说如果他下了100局,这里只能取最后15局的对局情况,前面85局就不算了,这个情况,怎么用编程来完成。
2018-07-17 14:34
nosnoy
Rank: 8Rank: 8
来 自:mcu
等 级:蝙蝠侠
威 望:9
帖 子:452
专家分:890
注 册:2016-9-17
  得分:0 
回复 6楼 自学的数学
按照你图片以及题意来看 你是采取周期计算的 等级为1-18级的时候15局为一个周期,采用的周期结算段位增减 , 从第一场存入数据的话就没有这些问题了

电闪雷鸣之际 ,当心无杂念,安心渡劫
                                         -18.06.21
2018-07-17 15:38
nosnoy
Rank: 8Rank: 8
来 自:mcu
等 级:蝙蝠侠
威 望:9
帖 子:452
专家分:890
注 册:2016-9-17
  得分:0 
回复 7楼 nosnoy
比如 下了100局 ,每一个账号都是从18级开始往上升 ,理论上 100局无法从18级达到1段 所以你每次提取15个数就行了

电闪雷鸣之际 ,当心无杂念,安心渡劫
                                         -18.06.21
2018-07-17 15:41
自学的数学
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:30
帖 子:794
专家分:3355
注 册:2017-11-15
  得分:0 
回复 8楼 nosnoy
不是这么回事的,在你申请账号时,可以定你自己的棋力,不一定是18级,可以是1段,也可以直接是13级,看你自愿了。还有就是假设某棋手长时间都在某级保此不动,他也一会输,一会赢,只要他最后的15局(或20局)棋,符合上面的情况,那他就不能升级(或降级)。请问该怎么编程呢?
2018-07-17 15:51
烟雨晨曦
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:150
专家分:599
注 册:2017-3-5
  得分:5 
记录20场胜负 20个bit就可以了,也就是用int 就可以记录战绩,每完成一局向左移动一位,胜利加1,失败不做任何动作,剩下的就是判断这个变量,想加什么规则就加什么规则。
2018-07-17 16:31
快速回复:围棋:如何确定还需几连胜升一段或几连败降一段
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.068288 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved