bai 2
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