| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1112 人关注过本帖
标题:6边形,各个顶点都有值可以为正,可以为负数,边上有运算符:+或者*。每次将 ...
只看楼主 加入收藏
zjdxsunyan
Rank: 1
等 级:新手上路
帖 子:30
专家分:5
注 册:2011-4-10
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:15 
6边形,各个顶点都有值可以为正,可以为负数,边上有运算符:+或者*。每次将边上的两个数运算之后,去掉这个边,求最后得到的最大值是多少。
6边形,各个顶点都有值可以为正,可以为负数,边上有运算符:+或者*。每次将边上的两个数运算之后,去掉这个边,求最后得到的最大值是多少。
搜索更多相关主题的帖子: 最大值 
2012-10-16 20:37
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
负数与正数用+运算
正数与正数用*运算
负数与负数不进行*运算

取顶点 将会得到两个运算符 两个数据
运算符* + 用 0,1 表示
正负 用 1,0表示
那么一个边的 组合就会有
运算符                           编码
0       0   0   负数之间的乘法        a
1       0   0   负数之间的+法         b
0       1   1   正数之间的乘法        c
1       1   1   正数之间的+法         d
0       0   1   正负数之间的乘法      e
1       0   1   正负数之间的+法       f

这么六种组合 表示一个边上可能出现的情况
对于一个顶点来说  他有两条边  
那么就要比较两条边上的运算后 数据的大小 后决定进行 哪种运算  这样计算出的结果方才为最大的
对这六种情况的编码进行优先级的排序
相同的方式编码  采取动作 为  运算后比较
  



我要成为嘿嘿的黑客,替天行道
2012-10-16 23:59
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
有点事情  等会再写

我要成为嘿嘿的黑客,替天行道
2012-10-16 23:59
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
6条边的话直接搜索就可以了

如果更多的话,可以用动态规划
2012-10-17 00:03
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
你丫的,要写一个万能的程序

就必须找出规律
你丫的搞个6边行的弄嘛玩意嘛

动态分配 什么东西呢?

我要成为嘿嘿的黑客,替天行道
2012-10-17 00:14
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
这个问题 如果想做的好

要用到数学里面的组合问题

我要成为嘿嘿的黑客,替天行道
2012-10-17 00:15
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
这个麻烦了,我图那个章节没有学

我要成为嘿嘿的黑客,替天行道
2012-10-17 00:24
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:10 
建立一个双向循环链表
数据格式
struct elme{
  int num;
  char yunsuanfu;
  int bianshu
  struct elme *next;
  struct elme *prev
}
算法描述
1.从多边形中任意取一个顶点 对这个顶点两条边 进行运算 比较运算结构,对运算结果比较大的边进行去边运算,实现的动作是 从循环链表变成单链表的过程
    动作: 由于我们在建立循环链表的时候,会将第一个建立的节点当做是链表的头节点,所以直接选择头节点head  为要取的节点
           伪代码部分
             a=head->num yuansuanfu  head->next->num;     对一个顶点两条边的运算
             b=head->num yuansuanfu head->prev->num;
             if(a>=b){                比较运算结果如果 a>=b  表头变表尾  第二个元素成为新的表头
              head->next->num=a;        
              p=head->next      
              head->next=NULL;
              head=p;
              head->prev=NULL
              }
             else{
              head->prev->num=b;    比较运算结果  如果 a<b  表头不变  表尾节点分开
              head->prev->next=NULL
              head->prev=NULL
             }
2.对新形成的双向链表的操作部分
      对链表头开始进行边的消除过程
      取链表的第二个元素  比较 dingdian=head->next;
       代码部分
      a=dingdian->num yuansuanfu  dingdian->next->num;
      b=dingdian->num yuansuanfu dingdian->prev->num;
       if(a>=b){
       dingdian->num=a;
       dingdian->prev=NULL;
       head=dingdian;
       }
       else{
        dingdian->num=b;
        dingdian->next=dingdian->next->next;
        dingdian->next->next->prev=dingdian;
        free(dingdian->next);
        }
        这部分代码是进行比较的
        循环条件部分,我就不进行推导了

               
           
           

[ 本帖最后由 zhu224039 于 2012-10-17 02:29 编辑 ]

我要成为嘿嘿的黑客,替天行道
2012-10-17 02:06
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
这个比较部分的代码还是可以进行优化的

比如 一分为二的 分治算法

还有从运算优先级方面着手也能进行改变

运算的一个大前提条件是 ,运算的值永远都保持向最大值靠拢

我要成为嘿嘿的黑客,替天行道
2012-10-17 02:09
zjdxsunyan
Rank: 1
等 级:新手上路
帖 子:30
专家分:5
注 册:2011-4-10
收藏
得分:0 
回复 9楼 zhu224039
您好,能不能给出代码呀,边数要任意的。
2012-10-17 14:34
快速回复:6边形,各个顶点都有值可以为正,可以为负数,边上有运算符:+或者*。 ...
数据加载中...
 
   



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

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