Pagini recente » Cod sursa (job #2144213) | Cod sursa (job #113179) | Cod sursa (job #3236913) | Cod sursa (job #924598) | Cod sursa (job #3130165)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
bool generateTicket(int N, int S, const vector<int>& numbers, int currentSum, vector<int>& chosenNumbers, vector<int>& result) {
if (chosenNumbers.size() == 6) {
if (currentSum == S) {
result = chosenNumbers;
return true;
} else {
return false;
}
}
for (int i = 0; i < N; i++) {
chosenNumbers.push_back(numbers[i]);
if (generateTicket(N, S, numbers, currentSum + numbers[i], chosenNumbers, result)) {
return true;
}
chosenNumbers.pop_back();
}
return false;
}
vector<int> findWinningTicket(int N, int S, const vector<int>& numbers) {
vector<int> chosenNumbers;
vector<int> result;
generateTicket(N, S, numbers, 0, chosenNumbers, result);
return result;
}
int main() {
ifstream inputFile("loto.in");
if (!inputFile.is_open()) {
cout << "Error opening input file." << endl;
return 1;
}
ofstream outputFile("loto.out");
if (!outputFile.is_open()) {
cout << "Error opening output file." << endl;
inputFile.close();
return 1;
}
int N, S;
inputFile >> N >> S;
vector<int> numbers(N);
for (int i = 0; i < N; i++) {
inputFile >> numbers[i];
}
vector<int> winningTicket = findWinningTicket(N, S, numbers);
if (!winningTicket.empty()) {
for (int i = 0; i < 6; i++) {
outputFile << winningTicket[i] << " ";
}
} else {
outputFile << "-1";
}
inputFile.close();
outputFile.close();
return 0;
}