C++ 驿站

renzhewh 2010-08-30 05:38:43

第一题是关于最大子段和(算是经典题了)
这里寻求效率高的代码,具体题目要求如下
http://acm.hdu.edu.cn/showproblem.php?pid=1003

本人代码的运行结果 15MS 540K 991B 复杂度为O(n)

#include <stdio.h>

void MaxSum(int* data, int len)
{
int nBegin = 0, nEnd = 0;
int nSum = data[0];

int nCurBegin = 0;
int nCurSum = 0;
int i;

for (i = 0; i < len; ++i)
{
nCurSum += data[i];

if (nCurSum > nSum)
{
nBegin = nCurBegin, nEnd = i;
nSum = nCurSum;
}

if (nCurSum < 0)
{
nCurBegin = i + 1;
nCurSum = 0;
}
}

printf("%d %d %d\n", nSum, nBegin + 1, nEnd + 1);
}

int main()
{
enum {MAXLEN = 100000 + 1};
int data[MAXLEN] = { 0 };

int nTimes, nNums;
int i, j;
scanf("%d", &nTimes);

for (i = 1; i <= nTimes; ++i)
{
scanf("%d", &nNums);
for (j = 0; j < nNums; ++j)
{
scanf("%d", data + j);
}

printf("Case %d:\n", i);
MaxSum(data, nNums);
if (i < nTimes)
puts("");
}

return 0;
}

第二题是 《C++程序设计语言》中的题,算是个智力题
写一个符合标准的C++程序,其中包含一段至少有十个不同的连续的关键字,
其间没有标识符、运算符、标点符号等分隔它们

第三题 一个语法问题
想实现一个二进制读取文件类,可是无法接收endl(详见注释部分),不知道为什么?
#include <iostream>
#include <fstream>
using namespace std;

// 文件的二进制读取类
class bofstream : public ofstream
{
public:
bofstream(const char* fn)
: ofstream(fn, ios::out | ios::binary)
{}

void writebytes(const void* content, int size)
{
write((char*)content, size);
}

template <typename t>
bofstream& operator<< (const t& value)
{
writebytes(&value, sizeof(t));
return *this;
}
};

int main()
{
bofstream bof("data.txt");
bof << 124;
// bof << endl; 编译错误
return 0;
}

最后一题 压轴的 :-)
定义一个带有操作save()和no_save()的基类Persistent,用它可以控制在析构函数里是否将对象写入永久存储器。
除了这两个操作外,类还应该提供哪些有用的操作?用一些你选定的类测试。

希望回答者能叙述的详细点

...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
renzhewh 2010-09-10
  • 打赏
  • 举报
回复
help 2
renzhewh 2010-09-01
  • 打赏
  • 举报
回复
%……&%&……%&%&%(*&*&(*&……(……*&……
help
renzhewh 2010-08-31
  • 打赏
  • 举报
回复
==========
MichaelBomb 2010-08-30
  • 打赏
  • 举报
回复
学而时习之
Q446512799 2010-08-30
  • 打赏
  • 举报
回复
抢个SF慢慢看~~

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧