例题6-10 UVa699-The Falling Leaves(指针建树版)

这道题就比较简单了,借助足够大的数组保存每个位置的值得总和就好。其实做完之后感觉建树反而显得冗余,因为我的代码是边读入边判断的,树结构其实没有实际的用处,只是在计算总和时顺便建好的,所以不建树可能是更好的方法(参照紫书)。当然如果是建好树后再遍历求结果的话树结构是有用的,但是很显然会复杂很多。

题目链接:UVa 699

AC代码:

#include <iostream>
#include <cstring>
//#include <fstream>
using namespace std;

const int maxn = 1000;
struct Node{
	Node* left, * right;
	Node() :left(NULL), right(NULL) {}
}*root;
int sum[maxn];

void remove(Node* u) {
	if (u == NULL) return;
	remove(u->left);
	remove(u->right);
	delete u;
}
Node* build(Node* node,int pos) {
	node = new Node();
	int x;
	cin >> x;
	if (x == -1) return NULL;
	sum[pos] += x;
	node->left = build(node->left, pos - 1);
	node->right = build(node->right, pos + 1);
	return node;
}
bool Init() {
	int v;
	cin >> v;
	if (v == -1) return false;
	int pos = maxn / 2;
	memset(sum, 0, sizeof(sum));
	remove(root);
	root = new Node();
	sum[pos] = v;
	root->left=build(root->left, pos - 1);  //建立左右子树
	root->right=build(root->right, pos + 1);
	return true;
}
int main() {
	//ofstream out("C:\\Users\\Acer\\Desktop\\1.txt");
	int cnt = 1;
	while (Init()) {
		int p = 0;
		//if (out.is_open()) {
			while (sum[p] == 0) p++;
			cout << "Case " << cnt++ << ":" << endl << sum[p++];
			while (sum[p] != 0)
				cout << " " << sum[p++];
			cout << endl<<endl;
		//}
	}
	return 0;
}

记录紫书代码:

#include <iostream>
#include <cstring>
using namespace std;

const int maxn = 1000;
int sum[maxn];

void build(int p) {
	int v;
	cin >> v;
	if (v == -1) return;
	sum[p] += v;
	build(p - 1);
	build(p + 1);
}
bool init() {
	int v;
	cin >> v;
	if (v == -1) return false;
	int pos = maxn / 2;
	memset(sum, 0, sizeof(sum));
	sum[pos] = v;
	build(pos - 1); build(pos + 1);
	return true;
}
int main() {
	int cnt = 1;
	while (init()) {
		int p = 0;
		while (sum[p] == 0) p++;
		cout << "Case " << cnt++ << ":" << endl << sum[p++];
		while (sum[p] != 0)
			cout << " " << sum[p++];
		cout << endl << endl;
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误是由于CentOS系统无法找到指定的字体库导致的。"sans-serif"是一个通用的字体家族名称,CentOS默认情况下没有安装这个字体家族。因此,系统会自动回退到使用默认的字体库"dejavu"。 如果你希望解决这个问题,有几种方法可以尝试: 1. 安装"dejavu"字体库:可以使用以下命令安装"dejavu"字体库: ``` sudo yum install dejavu-sans-fonts ``` 安装完成后,系统将能够找到并使用该字体库。 2. 安装其他字体库:如果你不想使用"dejavu"字体库,可以尝试安装其他的字体库。你可以在CentOS的软件仓库中查找并安装带有"sans-serif"字体家族的字体库。 3. 更改默认字体设置:如果你希望系统使用其他字体库作为默认字体,你可以编辑系统的默认字体设置。具体的编辑方法可能因不同的应用而有所不同,但通常在`/etc/fonts/fonts.conf`或`~/.fonts.conf`文件中可以找到默认的字体设置。你可以将默认字体设置更改为已安装的字体库名称。 总之,"centos findfont: font family ['sans-serif'] not found. falling back to dejavu"错误表示系统在找不到指定的字体家族时会回退到"dejavu"字体库。你可以通过安装相应的字体库,或者更改默认字体设置来解决这个问题。 ### 回答2: 这是一个关于CentOS操作系统中的字体问题。当系统无法找到指定的字体家族“sans-serif”时,它会回退到使用默认的字体家族“dejavu”。 CentOS是一种常见的Linux发行,它基于社区本的Red Hat Enterprise Linux(RHEL)。在CentOS中,字体是用于显示应用程序、界面和文本内容的重要元素。 在某些情况下,当应用程序或系统试图使用“sans-serif”字体家族时,如果该字体家族不存在或无法访问,则会出现“findfont: font family ['sans-serif'] not found. falling back to dejavu”的错误。这可能是由于系统缺少所需的字体文件或字体配置错误引起的。 为了解决这个问题,有几种可能的解决方法: 1. 安装缺少的字体文件:可以通过安装缺少的字体文件来解决该问题。可以通过在终端中使用命令sudo yum install <font-package-name>来安装缺少的字体包。 2. 检查字体配置:可能字体配置存在问题,可以通过查看字体配置文件进行调整。配置文件位于/etc/fonts目录下,例如/etc/fonts/fonts.conf。可以编辑该文件,查看和调整字体配置信息。 3. 更改默认字体:如果以上方法仍然无法解决问题,还可以尝试更改系统的默认字体设置。可以通过编辑用户目录下的.fonts.conf文件或全局目录下的/etc/fonts/local.conf文件来更改默认字体。 需要注意的是,对于操作系统的更改和调整,建议在进行操作之前先备份相关文件,以防万一出现意外情况。 总而言之,“centos findfont: font family ['sans-serif'] not found. falling back to dejavu”这个错误是由于系统无法找到指定的字体家族而导致的。可以通过安装缺少的字体文件、调整字体配置或更改默认字体来解决这个问题。 ### 回答3: CentOS是一种Linux操作系统,用于服务器和桌面计算机。当系统无法找到所需的字体时,会出现"findfont: font family ['sans-serif'] not found. falling back to dejavu"的错误信息。 该错误是由系统中缺少所需字体导致的。在这种情况下,系统会自动回退到默认的DejaVu字体。DejaVu是一种自由字体家族,包含各种字形和符号,可作为一个通用的替代方案。 要解决这个问题,有几种方法可供尝试。首先,可以手动安装所需的字体。可以通过访问各个字体的官方网站,下载并安装适用于CentOS的字体。将字体文件拷贝到/usr/share/fonts/目录下,然后运行"fc-cache -f -v"命令来刷新字体缓存。 另外,还可以通过安装额外的字体包来解决问题。在CentOS中,可以使用yum包管理器来安装字体。可以运行"yum search fonts"命令来查找可用的字体包,然后使用"yum install"命令来安装所需的字体包。 另外,还可以尝试修改系统的字体配置文件。可以编辑/etc/fonts/fonts.conf文件,将sans-serif字体族添加到<fontconfig>标签内。将类似以下行添加到文件中: <alias> <family>sans-serif</family> <prefer><family>DejaVu Sans</family></prefer> </alias> 然后保存文件,并运行"fc-cache -f -v"命令来刷新字体缓存。 通过执行上述方法中的一种或多种,您应该能够解决"findfont: font family ['sans-serif'] not found. falling back to dejavu"错误,并恢复系统正常使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值