| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 816 人关注过本帖
标题:求墙的面积。高手帮忙提供思路
取消只看楼主 加入收藏
stupidfishsj
Rank: 1
等 级:新手上路
帖 子:9
专家分:2
注 册:2010-10-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:0 
求墙的面积。高手帮忙提供思路
现在有一面墙,这面墙的高度并不是固定的。
区间 [l, r] 和这个区间的高度h。如果有重叠的部
分 ,取最高的高度。
★ 数据输入
输入 第一行有一个正整数 n(1<=n<=10000), 表示 n 个回复。
接下来 n 行,每行有三个数字 l r h ,表示区间 [l, r] 的高度为 h 。
计算过程中所有数据均在 int 范围之内。
★ 数据输出
输出墙的面积。
输入示例 输出示例
3
1 5 5
1 3 8
4 5 9
30
★ 样例说明
区间 [1, 5] 高度为 5 , 区间 [1, 3] 高度为 8 ,区间 [4, 5] 高度为 9 。所以实际墙的高度应为
区间 [1, 3] 高度为 8 ,区间 [3, 4] 高度为 5 ,区间 [4, 5] 高度为 9 。总面积 S=8*(3-1)+5*(4-3)+9* (5-
4)=30 。
我自己想通过单向链表来实现。但不会处理区间面积交叉问题。
#include<iostream>
using namespace std;
class WALL
{
private:
public:
    int left;
    int right;
    int height;
    int area;
    WALL *next;
    WALL():left(0),right(0),height(0),next(0),area(0)
    {
    }
    void get_data()
    {
      scanf("%d%d%d",&left,&right,&height);
      area=(right-left)*height;
    }
    ~WALL()
    {}

};
int main()
{
    int num;
    int i=0;
    WALL *head=NULL;
    WALL *temp1,*temp2;
    scanf("%d",&num);
    while(i<num)//数据录入
    {
        temp1=(WALL *)malloc(sizeof(WALL));
        if(head==NULL)
            head=temp1;
        else
            temp2->next=temp1;
        temp1->next=NULL;
        temp1->get_data();
        temp2=temp1;
        ++i;
    }
    return 0;
}
大家能帮忙想个函数来处理面积交叉的问题吗?
搜索更多相关主题的帖子: 思路 面积 
2010-10-25 23:59
快速回复:求墙的面积。高手帮忙提供思路
数据加载中...
 
   



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

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