| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 977 人关注过本帖
标题:请求 计算机或C语言高手帮忙解决多米诺骨牌问题,谢谢
只看楼主 加入收藏
zhongliangv
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-10-30
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:1 
请求 计算机或C语言高手帮忙解决多米诺骨牌问题,谢谢
现有n块”多米诺骨牌”s1,s2,s3,...sn水平放成一排,每次骨牌si包含左右两个部分,每个部分赋予一个非负整数值,如下图所示为包含6块骨牌的序列.骨牌可做180度旋转,使得原来在左边的值变到右边,而原来右边的值移到左边,假设不论si如何旋转,L[i]总是存储si左边的值, R[i]总是存储si右边的值, W[i]用于存储si的状态:当L[i]<=R[i]时记为0,否则记为1,试采用分治法设计算法求:R[1]*L[2]+R[2]*L[3]+R[3]*L[4]+R[4]*L[5]+...++R[n-1]*L[n]的最大值,以及当取得最大值时每个骨牌的状态.
        5|8      4|2     9|6    7|7    3|9    11|10
         s1       s2        s3     s4       s5       s6
搜索更多相关主题的帖子: C语言 请求 计算机 多米诺骨牌 
2010-11-02 19:34
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:20 
Program dom;
Type
  arr = Array[0..1000] of Integer;
Const
  infile = 'dom.in';
  outfile = 'dom.out';
Var
  c, f: arr;
  i, n, x, y, s1, s2, ans: Integer;
Procedure try1(i: Integer);
Begin
  If i = 0 Then Begin
    f[i]:= abs(s1 - s2);
    Exit;
  End;
  try1(i - 1);
  If f[i - 1] > abs(s1 - s2 + c[i]) Then Begin
    f[i]:= abs(s1 - s2 + c[i]);
    Inc(ans);
  End Else f[i]:= f[i - 1];
End;
Begin
  Assign(input, infile);
  Reset(input);
  Readln(n);
  s1:= 0;
  s2:= 0;
  For i:=1 to n do Begin
    Readln(x, y);
    Inc(s1, x);
    Inc(s2, y);
    c[i]:= 2 * (y - x);
  End;
  Close(input);
  ans:= 0;
  try1(n);
  Assign(output, outfile);
  Rewrite(output);
  Writeln(ans);
  Close(output);
End.


到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-11-02 20:01
快速回复:请求 计算机或C语言高手帮忙解决多米诺骨牌问题,谢谢
数据加载中...
 
   



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

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