가지치기 검색
#include <bits/stdc++.h>
using namespace std;
const int maxn = 10;
int id[256], letter[maxn], vis[maxn], edge[maxn][maxn], n, head, P[maxn], bestP[maxn], ans;
void map_id_letter(const string &s)
{
n = 0;
for (int c = 'A'; c <= 'Z'; c++)
if (s.find(c) != -1)
{
id[c] = n;
letter[n] = c;
n++;//
}
}
void bandwidth(int dis, int width)
{
if (dis == n)
{
ans = width;
memcpy(bestP, P, sizeof(P));
return;
}
else
for (int i = 0; i < n; i++)
if (!vis[i])
{
vis[i] = 1;
P[dis] = i;
int new_w = 0;
for (int j = 0; j < dis; j++)
if (edge[i][P[j]])
{new_w = dis - j; break;}// ,
int cur_bw = max(width, new_w);
if (cur_bw < ans)
bandwidth(dis + 1, cur_bw);
vis[i] = 0;
}
}
int main(int argc, char const *argv[])
{
string inp;
while (cin >> inp && inp[0] != '#')
{
map_id_letter(inp);
memset(edge, 0, sizeof(edge));
for (int i = 0; i < inp.size(); i++)
{
if (i == 0 || inp[i - 1] == ';')
head = inp[i];
else if (isalpha(inp[i]))//
edge[id[head]][id[inp[i]]] = 1, edge[id[inp[i]]][id[head]] = 1;
}
ans = n;
bandwidth(0, 0);
for (int i = 0; i < n; i++)
printf("%c ", letter[bestP[i]]);//
printf("-> %d
", ans);
}
return 0;
}
폭력 보다 빨 라 요. 얼마 인지 모 르 겠 어 요.
0.000s 밖 에 안 썼어 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.