免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2928 | 回复: 6
打印 上一主题 下一主题

菜鸟碰到难题,请大牛们指点一二 [复制链接]

论坛徽章:
10
亥猪
日期:2013-08-15 14:50:422015年迎新春徽章
日期:2015-03-04 09:58:112015亚冠之吉达阿赫利
日期:2015-07-21 09:49:08神斗士
日期:2015-11-20 14:07:3815-16赛季CBA联赛之江苏
日期:2017-08-17 14:04:21CU大牛徽章
日期:2013-09-18 15:15:45CU大牛徽章
日期:2013-09-18 15:16:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34巳蛇
日期:2014-03-29 19:05:3215-16赛季CBA联赛之辽宁
日期:2022-04-08 16:41:44
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-09 19:25 |只看该作者 |倒序浏览
5位跳水运动员参加跳水比赛,有人让他们预测比赛结果
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
比赛结果是每位选手都说对了一般,请编程确定比赛的结果
用C编写
自己不才,尝试写了点代码,可惜都是错的,
这里就不贴出来让大牛们笑话了

论坛徽章:
10
亥猪
日期:2013-08-15 14:50:422015年迎新春徽章
日期:2015-03-04 09:58:112015亚冠之吉达阿赫利
日期:2015-07-21 09:49:08神斗士
日期:2015-11-20 14:07:3815-16赛季CBA联赛之江苏
日期:2017-08-17 14:04:21CU大牛徽章
日期:2013-09-18 15:15:45CU大牛徽章
日期:2013-09-18 15:16:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34巳蛇
日期:2014-03-29 19:05:3215-16赛季CBA联赛之辽宁
日期:2022-04-08 16:41:44
2 [报告]
发表于 2012-04-09 20:01 |只看该作者
呵呵 度娘居然有答案了

论坛徽章:
0
3 [报告]
发表于 2012-05-15 22:14 |只看该作者
你贴到FP版是想要FP的答案吗?
我看了下百度上那些O(n^5)的算法...我给出一个通用的Scheme算法好了,不过这个算法只能求出一个可能值,要求出所有可能值需要一些改进

  1. (use-modules (srfi srfi-1))

  2. (define *test*
  3.   '(((B 1) (A 3))
  4.     ((B 2) (E 4))
  5.     ((C 1) (D 2))
  6.     ((C 5) (D 3))
  7.     ((E 4) (A 1))))

  8. (define (do-the-math)
  9.   (let lp((rest *test*) (last '()) (w 'l) (result '()))
  10.     (if (null? rest)
  11.         (print-it result)
  12.         (let* ((e ((if (eq? w 'l) car cadr) (car rest)))
  13.                (m (assoc-ref result (car e))))
  14.           (cond
  15.            ((and (or (not m) (= (car m) (cadr e)))
  16.                  (not (find (lambda (x) (= (cadr x) (cadr e))) result)))
  17.             (lp (cdr rest) (car rest) 'l (cons e result))) ;; add
  18.            ((null? (cdr rest))
  19.             (call-with-values
  20.                 (lambda () (unzip2 result))
  21.               (lambda (a b)
  22.                 (let ((k (lset-xor eq? '(A B C D E) a))
  23.                       (l (lset-xor = '(1 2 3 4 5) b)))
  24.                   (lp '() #f #f (cons `(,@k ,@l) result))))))
  25.            (else
  26.             (if (eq? w 'l)
  27.                 (lp rest rest 'r result) ;; try right
  28.                 (lp (append last rest) '() 'l (cdr result))))))))) ;; rollback

  29. (define (print-it ll)
  30.   (for-each (lambda (x)
  31.               (display (car x)))
  32.             (sort ll (lambda (x y) (< (cadr x) (cadr y)))))
  33.   (newline))
复制代码
打印结果: BDAEC

即便是N个人M种猜测,也可以直接套用。

论坛徽章:
10
亥猪
日期:2013-08-15 14:50:422015年迎新春徽章
日期:2015-03-04 09:58:112015亚冠之吉达阿赫利
日期:2015-07-21 09:49:08神斗士
日期:2015-11-20 14:07:3815-16赛季CBA联赛之江苏
日期:2017-08-17 14:04:21CU大牛徽章
日期:2013-09-18 15:15:45CU大牛徽章
日期:2013-09-18 15:16:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34巳蛇
日期:2014-03-29 19:05:3215-16赛季CBA联赛之辽宁
日期:2022-04-08 16:41:44
4 [报告]
发表于 2012-05-15 22:19 |只看该作者
回复 3# NalaGinrut


    呵呵呵 ,又涨见识了,虽然看不懂,不过,谢谢

论坛徽章:
0
5 [报告]
发表于 2012-08-23 10:09 |只看该作者

  1. typedef struct{
  2.         char a;
  3.         int b;
  4. }yuce_t;
  5. typedef struct{
  6.         yuce_t s1;
  7.         yuce_t s2;
  8. }humenSaying;



  9.         humenSaying a={{'b',1},{'a',3}};
  10.         humenSaying b={{'b',2},{'e',4}};
  11.         humenSaying c={{'c',1},{'d',2}};
  12.         humenSaying e={{'c',5},{'d',3}};
  13.         humenSaying d={{'e',4},{'a',1}};
  14.        
  15.         yuce_t yuce[5]={{'a',0},{'b',0},{'c',0},{'d',0},{'e',0}};
  16.        

复制代码
结果 是确定的,所以可以 对所有结果进行设置,然后依次 对 上面的话语进行验证,如果错误,此种结果为假。
直到 为真。
这只是想法,代码 现在 还没写完。

论坛徽章:
0
6 [报告]
发表于 2012-08-23 10:26 |只看该作者
唉 遗憾,看到 百度的答案 太简单了。。
我到时麻烦,还需要 组合 的知识。。都忘记了。。。

论坛徽章:
0
7 [报告]
发表于 2012-08-23 14:08 |只看该作者
NalaGinrut 发表于 2012-05-15 22:14
你贴到FP版是想要FP的答案吗?
我看了下百度上那些O(n^5)的算法...我给出一个通用的Scheme算法好了,不过这 ...



给一个Haskell的
  1. import Data.List(permutations)
  2. main = print [ (a,b,c,d,e) | (a:b:c:d:e:_) <- permutations [1..5], (b==2) /= (a==3), (b==2) /= (e==4), (c==1) /= (d==2), (c==5) /= (d==3), (e==4) /= (a==1)]
复制代码
运行结果:
*Main> main
[(3,1,5,2,4)]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP