bai 2
user_5152005
plain_text
a year ago
1.9 kB
8
Indexable
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <queue>
#include <vector>
#include <set>
#include <algorithm>
#include <map>
#include <unordered_map>
#include <cstdlib>
#include <string>
#define oo 10000
#define NONE 0
#define PLUS -1
#define MINUS -2
using namespace std;
int test_case;
string key;
int a[30];
int f[10];
vector<int> vtor(60000,0);
int tried[60000];
void resetA()
{
for (int i = 0; i < 30; i++)
{
a[i] = 0;
}
for (int i = 0; i < 60000; i++)
{
tried[i] = 0;
//checked[i] = 0;
}
}
int counting()
{
int temp=a[0];
vector<int> checked(60000, 0);
for ( int i = 1; i < (key.size()*2-1) ; i=i+2)
{
if (checked[i]==0)
{
if (a[i] == NONE)
{
temp = temp * 10 + a[i + 1];
}
else if (a[i] == PLUS)
{
if (a[i + 2] == NONE && i + 2 < (key.size() * 2 - 1))
{
temp = temp + a[i + 1]*10+ a[i+3] ;
checked[i+2] = 1;
}
else temp = temp + a[i + 1];
}
else if (a[i] == MINUS)
{
if (a[i + 2] == NONE && i+2 < (key.size() * 2 - 1))
{
temp = temp -(a[i + 1] * 10 + a[i+3]);
checked[i+2] = 1;
}
else temp = temp - a[i + 1];
}
}
}
return temp;
}
void backtrack(int spacing)
{
if (spacing ==key.size()*2-1)
{
int x = counting();
vtor.push_back(x);
return;
}
for (int j = MINUS; j <= NONE; j++)
{
a[spacing] = j;
backtrack(spacing + 2);
a[spacing] = 0;
}
}
int main()
{
freopen("input.txt", "r", stdin);
cin >> test_case;
for (int i = 0; i < test_case; i++)
{
cin >> key;
for (int j = 0; j < 10; j++)
{
cin >> f[j];
}
resetA();
vtor.clear();
int count1 = 0;
for (int j = 0; j < key.size(); j++)
{
a[count1] = key[j] - '0';
count1 = count1 + 2;
}
backtrack(1);
// config();
}
return 0;
}Editor is loading...
Leave a Comment