Pereiti prie turinio

Rekomenduojami pranešimai

Pats programavau, bet rodo ekrane (neveikia). Kodel? Gal isspresim problema?

 

Programavime

#include <iostream>     //For std::vector
#include <fstream>      //For std::cout and std::cin
#include <vector>		//For std::vector

using namespace std;

int main(int argc, char ** argv)
{
std::ifstream infile(argv[1]);
if (!infile) {
	std::cout << "Could not open " << argv[1];
	return 0;
}
std::ofstream outfile(argv[2]);
if (!outfile) {
	std::cout << "Could not open " << argv[2];
	return 0;
}

unsigned short numberOf_testCases;
unsigned short credit, numberOf_Items, itemPrice;
std::vector<unsigned short> allItems;

infile >> numberOf_testCases;    //Bandymų skaičius
for (unsigned int i = 0; i<numberOf_testCases; i++){
	infile >> credit;            //Kreditas
	infile >> numberOf_Items;    //Elementų skaičius
	for (unsigned int j = 0; j<numberOf_Items; j++){
		infile >> itemPrice;
		allItems.push_back(itemPrice);
	}

	bool breakBool = false;
	for (unsigned int j = 0; j<allItems.size(); j++){
		for (unsigned int k = j + 1; k<allItems.size(); k++){
			if ((allItems[j] + allItems[k]) == credit)
			{
				outfile << "Atvejis: " << i + 1;
				outfile << ": " << j + 1 << " " << k + 1 << endl;
				breakBool = true;
				break;
			}
		}
		if (breakBool)
			break;
	}
	allItems.clear();
}

return 0;
}

post-108077-0-23113000-1494848143_thumb.jpg

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Padariau truputį kitaip. Bet dėl dvimačio "bool DP_Matrix[sum + 1][n + 1];", turi buti veikimu. Gal padėsite?

 

#include <iostream>
#include <fstream>
#include <algorithm>    // std::reverse
#include <vector>       // std::vector
using namespace std;
std::vector<unsigned short> getIndecesOfSum(
       std::vector<unsigned short> numbers, int n, unsigned short sum);
int main(int argc, char ** argv)
{
       std::ifstream infile(argv[1]);
       if (!infile) {
               std::cout << "could not open " << argv[1];
               return 0;
       }
       std::ofstream outfile(argv[2]);
       if (!outfile) {
               std::cout << "could not open " << argv[2];
               return 0;
       }

       unsigned short numberOf_testCases;
       unsigned short credit, numberOf_Items, itemPrice;
       std::vector<unsigned short> allItems, selectedItems;

       infile >> numberOf_testCases;    
       for (unsigned int i = 0; i<numberOf_testCases; i++){
               infile >> credit;            
               infile >> numberOf_Items;    
               for (unsigned int j = 0; j<numberOf_Items; j++){
                       infile >> itemPrice;
                       allItems.push_back(itemPrice);
               }

               selectedItems = getIndecesOfSum(allItems,
                       allItems.size(), credit);
               outfile << "Case #" << i + 1 << ": ";
               for (unsigned int j = 0; j<selectedItems.size(); j++){
                       outfile << selectedItems[j] << " ";
               }
               outfile << endl;
               allItems.clear();
               selectedItems.clear();
       }

       return 0;
}
std::vector<unsigned short> getIndecesOfSum(
       std::vector<unsigned short> numbers, int n, unsigned short sum)
{
       std::vector<unsigned short> IndecesOfSum;
       bool DP_Matrix[sum + 1][n + 1]; 

       for (int i = 0; i <= n; i++)
               DP_Matrix[0][i] = true;

       for (int i = 1; i <= sum; i++)
               DP_Matrix[i][0] = false;

       for (int i = 1; i <= sum; i++)
       {
               for (int j = 1; j <= n; j++) 
               {

                       DP_Matrix[i][j] = DP_Matrix[i][j - 1];
                       if (i >= numbers[j - 1])
                               DP_Matrix[i][j] = DP_Matrix[i][j] ||
                               DP_Matrix[i - numbers[j - 1]][j - 1];
               }
       }

       for (int j = n; j >= 1; j--)
       {
               if (sum - numbers[j - 1] >= 0 &&
                       DP_Matrix[sum - numbers[j - 1]][j - 1])
               {
                       IndecesOfSum.push_back(j);
                       sum = sum - numbers[j - 1];
               }
       }

       std::reverse(IndecesOfSum.begin(), IndecesOfSum.end());

       return IndecesOfSum;
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...