Deu Bracitoi Seqnsia

本着代码暂时不能公开的原则,现在先记录,等解禁后再公布题号(虽然我觉得相差也能查得到)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <assert.h>
using namespace std;
#define MAXN 103
#define INF 0x3f3f3f3f
char originalSequence[MAXN];
int bracketLength[MAXN][MAXN];
int bracketBreakChoose[MAXN][MAXN];
int sequenceLength;
bool arePair(char a, char b) { return ((a == '(') && (b == ')')) || ((a == '[') && (b == ']')); }
void init()
{
	for (int i = 0; i < sequenceLength; i++) {
		for (int j = 0; j < sequenceLength; j++) {
			bracketLength[i][j] = INF;
			bracketBreakChoose[i][j] = -1;
		}
	}
}
void dp()
{
	for (int i = 0; i < sequenceLength; i++) {
		bracketLength[0][i] = 2;//length after adding
		bracketBreakChoose[0][i] = i;
	}
	for (int i = 1; i < sequenceLength; i++) {
		for (int j = 0; j < sequenceLength-i ; j++) {
			int tempMin = INF;
			int tempMinPoz = -1;
			if (arePair(originalSequence[j], originalSequence[j+i])) {
				tempMin = (i == 1) ? 2 : bracketLength[i-2][j+1]+2;
				tempMinPoz = -2;//for extraction
			}
			for (int k = 0; k < i; k++) {
				if (bracketLength[k][j] + bracketLength[i-k-1][j+k+1] < tempMin) {
					tempMin = bracketLength[k][j] + bracketLength[i-k-1][j + k+1];
					tempMinPoz = j+k;
				}
			}
			bracketLength[i][j] = tempMin;
			bracketBreakChoose[i][j] = tempMinPoz;
		}
	}
}
void print(int from,int to)
{
	if (from > to)
		return;
	if (from == to) {
		if (originalSequence[from] == '(' || originalSequence[from] == ')')
			printf("()");
		else
			printf("[]");
	}
	else {
		if (bracketBreakChoose[to-from][from] == -2) {
			printf("%c",originalSequence[from]);
			print(from + 1, to - 1);
			printf("%c", originalSequence[to]);
		}
		else {
			print(from, bracketBreakChoose[to-from][from]);
			print(bracketBreakChoose[to-from][from] + 1, to);
		}
	}
}
void solve()
{
	dp();
	print(0, sequenceLength - 1);
	printf("\n");
}
int main()
{
	while (gets_s(originalSequence) != NULL) {
		//printf("%s with strlen %d\n", originalSequence, strlen(originalSequence));
		sequenceLength = strlen(originalSequence);
		if (sequenceLength == 0) {
			printf("\n");
			continue;
		}
		init();
		solve();
	}
	return 0;
}

AMD显卡报错通常是指在使用AMD显卡时遇到了某种错误或异常情况。下面是可能导致AMD显卡报错的一些常见原因和解决方法: 1. 驱动问题:AMD显卡需要正确安装和更新与之对应的驱动程序。如果驱动程序存在问题,可能会导致显卡报错。解决方法是在AMD官方网站上下载最新的显卡驱动,然后卸载旧驱动并安装新驱动。 2. 硬件冲突:有时候AMD显卡与其他硬件设备冲突可能会导致报错。解决方法是检查是否有其他设备与显卡冲突,如内存、电源或其他扩展卡。如果有冲突,需要重新调整硬件配置。 3. 过热或电压问题:如果显卡过热或供电不稳定,也可能导致报错。解决方法是确保显卡有足够的散热,并且供电稳定。可以清理显卡散热器,确保风扇正常工作,并检查电源是否正常。 4. 显存或GPU损坏:如果AMD显卡出现了显存或GPU损坏,也会导致报错。这种情况下,需要更换坏掉的硬件部件。 5. 软件冲突:有时候与AMD显卡驱动冲突的软件也会导致报错。解决方法是检查是否有与显卡驱动不兼容的软件,如杀毒软件、系统优化工具等。临时禁用或卸载可能导致冲突的软件,然后尝试重新启动显卡。 总之,AMD显卡报错可能有多种原因,需要根据具体情况进行排查和解决。如果无法自行解决,建议联系AMD官方技术支持或寻求专业人士的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值