bai 2

 avatar
user_5152005
plain_text
5 months ago
1.9 kB
2
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