uva 327 - Evaluating Simple C Expressions

我的做法没有涉及什么语法树,主要是字符串处理,水平略搓写的有点麻烦,题目说忽略空格,youcase比如 a++有可能是a  +  +,导致WA,后来加上了预处理去掉所有空格才AC。

 

#include<stdio.h>
#include<string.h>

char tmpStr[200];
char expr[200];
int appeared[26];
int plus[26];
int minus[26];
char afterExp[200];
int val;

void print() {
	printf("Expression: %s\n", tmpStr);
	printf("    value = %d\n", val);
	int j;
	for (j = 0; j < 26; j++) {
		if (appeared[j]) {
			char ch = j + 'a';
			int value = j + 1;
			if (plus[j] != 0)
				value++;
			if (minus[j] != 0)
				value--;
			printf("    %c = %d\n", ch, value);
		}
	}

}

void init() {
	val = 0;
	int i;
	for (i = 0; i < 26; i++) {
		appeared[i] = 0;
		plus[i] = 0;
		minus[i] = 0;
	}
}

void evaluateAndPrint() {
	init();
	int len = strlen(expr);
	int idx = 0;
	int i;
	for (i = 0; i < len; i++) {
		if (expr[i] >= 'a' && expr[i] <= 'z') {
			appeared[expr[i] - 'a'] = 1;
			afterExp[idx++] = expr[i];
			if (i - 2 >= 0 && expr[i - 1] == '+' && expr[i - 2] == '+')
				plus[expr[i] - 'a'] = -1;
			if (i - 2 >= 0 && expr[i - 1] == '-' && expr[i - 2] == '-')
				minus[expr[i] - 'a'] = -1;
			if (i + 2 < len && expr[i + 1] == '+' && expr[i + 2] == '+')
				plus[expr[i] - 'a'] = 1;
			if (i + 2 < len && expr[i + 1] == '-' && expr[i + 2] == '-')
				minus[expr[i] - 'a'] = 1;
		} else if (expr[i] == '+' || expr[i] == '-') {
			if (i > 0 && i < len - 1 && expr[i - 1] != expr[i]
					&& expr[i] != expr[i + 1])
				afterExp[idx++] = expr[i];
		}

	}
	afterExp[idx] = 0;

	int flag = 1;
	for (i = 0; i < idx; i++) {
		if (afterExp[i] >= 'a' && afterExp[i] <= 'z') {
			int tmp = afterExp[i] - 'a' + 1;
			if (plus[afterExp[i] - 'a'] == -1)
				tmp++;
			if (minus[afterExp[i] - 'a'] == -1)
				tmp--;

			if (flag)
				val += tmp;
			else
				val -= tmp;

		} else if (afterExp[i] == '-')
			flag = 0;
		else if (afterExp[i] == '+')
			flag = 1;
	}

	print();

}

int main() {
	while (gets(tmpStr)) {
		int i;
		int idx = 0;
		for (i = 0; i < strlen(tmpStr); i++) {
			if ((tmpStr[i] >= 'a' && tmpStr[i] <= 'z') || tmpStr[i] == '+'
					|| tmpStr[i] == '-')
				expr[idx++] = tmpStr[i];
		}
		expr[idx] = 0;

		evaluateAndPrint();
	}
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"大规模基准数据集用于评估泛锐化性能"是一个用于评估图像泛锐化算法表现的数据集。泛锐化是一种图像处理技术,旨在通过将低分辨率的多光谱图像与高分辨率的全色图像融合,以产生具有较高空间分辨率和丰富光谱信息的图像。这种技术在许多遥感应用中都很有用,例如土地利用监测、资源管理和环境监测。 该数据集的规模大,包含了大量的多光谱和全色图像对,这些图像对均具有全面的注释和质量测量指标。这些图像对来自各种不同的遥感源,涵盖不同的场景和条件。数据集的构建过程经过精心设计,以保证评估结果的准确性和可靠性。 使用该数据集,研究人员和开发者可以对他们的泛锐化算法进行全面的评估和对比。他们可以将自己的算法应用于数据集中的图像对,并使用数据集中提供的注释进行性能评估。这些注释可以包括图像质量评价指标,如结构相似性指数(SSIM)和峰值信噪比(PSNR),或者一些更复杂的图像质量评价方法,如目标检测和目标分类任务的准确率。通过与其他算法进行比较,开发者可以了解他们的算法在不同场景和条件下的表现如何,并进一步改进和优化他们的方法。 "大规模基准数据集用于评估泛锐化性能"的建立为泛锐化算法的发展提供了一个公共的平台,促进了该领域的研究和进步。研究人员和开发者可以根据数据集中的结果和经验得出更好的算法和技术,进一步提高泛锐化算法在实际应用中的效果。这个数据集的存在为遥感图像处理的研究和应用带来了很大的推动力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值