DFS-zb的生日

zb的生日

时间限制:3000 ms  |  内存限制:65535 KB
难度:2
描述
今天是阴历七月初五,acm队员zb的生日。zb正在和C小加、never在武汉集训。他想给这两位兄弟买点什么庆祝生日,经过调查,zb发现C小加和never都很喜欢吃西瓜,而且一吃就是一堆的那种,zb立刻下定决心买了一堆西瓜。当他准备把西瓜送给C小加和never的时候,遇到了一个难题,never和C小加不在一块住,只能把西瓜分成两堆给他们,为了对每个人都公平,他想让两堆的重量之差最小。每个西瓜的重量已知,你能帮帮他么?
输入
多组测试数据(<=1500)。数据以EOF结尾
第一行输入西瓜数量N (1 ≤ N ≤ 20)
第二行有N个数,W1, …, Wn (1 ≤ Wi ≤ 10000)分别代表每个西瓜的重量
输出
输出分成两堆后的质量差
样例输入
5
5 8 13 27 14
样例输出
3


dfs题目,不过之前都是超时,其实可以这样想,两种方式,一是选择不加,二是选择加。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int a[22], MIN = 9999999, SUM = 0, n;
void dfs(int step, int sum) {
	if (step == n) return;
	if (sum >= 0) MIN = min(MIN, (int)fabs(SUM - sum*2));
	dfs(step+1, sum); // 不加 
	dfs(step+1, sum+a[step]);	// 加 
}
int main() {
	while(scanf("%d", &n) != EOF) {
		MIN = 9999999;SUM=0;
		memset(a, 0, sizeof(a));
		for (int i = 0; i < n; i++) {
			scanf("%d", &a[i]);
			SUM += a[i];
		}
		dfs(0, 0);
		printf("%d\n", MIN);
	}
	return 0;
}

<think>我们被要求提供使用Xshell执行HDFS dfs命令的结果图。但由于当前环境是文本交互,无法直接生成图片,我将用文字描述每个命令的典型输出结果,尽可能模拟终端显示效果。 注意:以下输出是基于典型Hadoop环境的模拟,实际输出可能因配置和文件系统内容而异。每个命令后都会给出示例输出。 1. hdfs dfs -ls [目录路径]:查看文件和目录 示例:查看根目录 命令:hdfs dfs -ls / 输出: Found 3 items drwxr-xr-x - hadoop supergroup 0 2024-01-01 10:00 /user drwxr-xr-x - hadoop supergroup 0 2024-01-02 11:00 /data -rw-r--r-- 3 hadoop supergroup 1024 2024-01-03 12:00 /testfile.txt 解释:第一列是权限,第二列是副本数(目录没有,文件有),然后是所有者、、大小、修改日期和路径。 2. hdfs dfs -mkdir [目录路径]:创建目录 命令:hdfs dfs -mkdir /newdir 输出:无(如果成功),失败则会报错。 3. hdfs dfs -mv [源路径] [目标路径]:移动文件 命令:hdfs dfs -mv /olddir/file.txt /newdir/file.txt 输出:无(如果成功)。 4. hdfs dfs -rm [文件路径]:删除文件 命令:hdfs dfs -rm /testfile.txt 输出: Deleted /testfile.txt 如果是目录,需要加`-r`:hdfs dfs -rm -r /olddir 5. hdfs dfs -cp [源路径] [目标路径]:复制文件 命令:hdfs dfs -cp /file1.txt /backup/file1.txt 输出:无(如果成功)。 6. hdfs dfs -cat [文件路径]:查看文件内容 命令:hdfs dfs -cat /data/example.txt 输出: Hello, HDFS! This is an example file. 7. hdfs dfs -put [本地源路径] [HDFS目标路径]:上传文件 命令:hdfs dfs -put localfile.txt /user/hadoop/ 输出:无(如果成功)。 8. hdfs dfs -get [HDFS源路径] [本地目标路径]:下载文件 命令:hdfs dfs -get /user/hadoop/hdfsfile.txt localfile.txt 输出:无(如果成功)。 注意:上述命令中,如果路径包含空格或特殊字符,需要用引号括起来。 由于无法提供实际截图,建议用户在实际环境执行这些命令观察结果。 另外,引用[1]中提到了`hdfs dfs -getmerge`命令,它可以将多个HDFS文件合下载到本地一个文件中。例如: 命令:hdfs dfs -getmerge /abc/abc1.txt /abc/abc2.txt /home/hadoop/abc3.txt 作用:将HDFS上的abc1.txt和abc2.txt合下载到本地的abc3.txt文件中。 如果需要更详细的帮助,可以使用`hdfs dfs -help [命令]`查看。 根据用户要求,我们生成了每个命令的示例输出。但请注意,实际输出与HDFS中的内容有关。 相关问题: 1. HDFS Shell命令和Linux Shell命令有什么主要区别? 2. 如何查看HDFS中某个文件的大小和副本数? 3. HDFS的上传下载过程中,如何显示进度? </think>以下是使用Xshell执行HDFS Shell命令的典型结果图示及说明(基于Hadoop 3.x环境模拟): --- ### 1. **查看文件和目录** `hdfs dfs -ls` ```bash $ hdfs dfs -ls /data Found 3 items drwxr-xr-x - hadoop supergroup 0 2024-06-01 10:23 /data/docs -rw-r--r-- 3 hadoop supergroup 104857 2024-06-01 09:15 /data/report.txt drwxr-xr-x - hadoop supergroup 0 2024-06-01 08:40 /data/backup ``` - ✅ 目录以 `d` 开头,文件以 `-` 开头 - ✅ 显示权限、副本数(如`3`)、所有者、大小和修改时间 [^3] --- ### 2. **创建目录** `hdfs dfs -mkdir` ```bash $ hdfs dfs -mkdir /data/new_dir (无输出表示成功) $ hdfs dfs -ls /data Found 4 items ...(包含新建的new_dir目录) ``` --- ### 3. **移动文件** `hdfs dfs -mv` ```bash $ hdfs dfs -mv /data/report.txt /data/backup/ Moved: 'hdfs://.../data/report.txt' to 'hdfs://.../data/backup/report.txt' ``` --- ### 4. **删除文件** `hdfs dfs -rm` ```bash $ hdfs dfs -rm /data/temp.log Deleted /data/temp.log $ hdfs dfs -rm -r /data/expired_dir # 删除目录需加-r Deleted /data/expired_dir ``` --- ### 5. **复制文件** `hdfs dfs -cp` ```bash $ hdfs dfs -cp /data/docs/file1.txt /backup/ Copied: 'hdfs://.../data/docs/file1.txt' to 'hdfs://.../backup/file1.txt' ``` --- ### 6. **查看文件内容** `hdfs dfs -cat` ```bash $ hdfs dfs -cat /data/config.ini [system] hadoop.version=3.3.6 block.size=128MB ... (直接输出文件全文) ``` --- ### 7. **上传文件** `hdfs dfs -put` ```bash $ hdfs dfs -put ~/local/data.csv /data/input/ (无输出表示成功) $ hdfs dfs -ls /data/input -rw-r--r-- 3 hadoop supergroup 204800 2024-06-01 11:30 /data/input/data.csv ``` --- ### 8. **下载文件** `hdfs dfs -get` ```bash $ hdfs dfs -get /data/output/result.csv ~/downloads/ (无输出表示成功) $ ls ~/downloads result.csv # 本地验证 ``` 特殊用法:合下载(引用[1]示例) `hdfs dfs -getmerge /abc/*.txt ~/merged.txt` [^1] --- ### 📌 关键特征总结 1. **成功操作**:多数命令成功时无输出(如`mkdir/put/get`) 2. **交互反馈**:删除/移动等操作会返回`Deleted`/`Moved`提示 3. **权限标识**:`drwxr-xr-x` 表示目录权限 [^2] 4. **副本数显示**:文件第二列为副本数(如 `3`)[^3] 5. **路径规范**:HDFS路径需以`/`开头,本地路径无需前缀 > ⚠️ 注意:实际输出取决于HDFS配置和文件状态,建议通过`hdfs dfs -help [command]`查看详细帮助。 --- ### 相关问题 1. HDFS Shell命令与Linux Shell命令有哪些主要区别? 2. 如何递归查看HDFS子目录的所有文件? 3. `hdfs dfs -getmerge`命令在合文件时如何处理不同编码?[^1]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值