Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // next_permutation example
- #include <iostream> // std::cout
- #include <algorithm> // std::next_permutation, std::sort
- int main () {
- int myints[] = {1,2,3,4,5,6};
- int i=0;
- int czas=0;
- int minCzas=1000;
- int tabM1[6]; // czasy wykonywania sie zadan na maszynie 1
- int tabM2[6]; // czasy wykonywania sie zadan na maszynie 2
- int kolejnosc[6]; // kolejnosc wykonywnia sie zadan
- int indeks=0; // najbardziej optymalna kolejnosc
- std::cout << "Podaj czas wykonywana sie zadan od 1 o 6 na maszynie 1.\n";
- for(int k=0; k<6; k++)
- {
- std::cout << "Czas wykonania zadania"<<' '<<k+1<<":";
- std::cin >> tabM1[k];
- }
- std::cout << "Podaj czas wykonywana sie zadan od 1 o 6 na maszynie 2.\n";
- for(int k=0; k<6; k++)
- {
- std::cout << "Czas wykonania zadania"<<' '<<k+1<<":";
- std::cin >> tabM2[k];
- }
- std::cout<<"\n";
- std::cout << "Czasy na maszynie 1: \n";
- for(int k=0; k<6; k++)
- {
- std::cout << tabM1[k] << " ";
- }
- std::cout << "\nCzasy na maszynie 2: \n";
- for(int k=0; k<6; k++)
- {
- std::cout << tabM2[k] << " ";
- }
- std::cout<<"\n";
- std::sort (myints,myints+6);
- std::cout << "The 6! possible permutations with 6 elements:\n";
- do {
- i++;
- // Wyliczenie czasu wykonania sie wsyztstkich zadan
- int koniecZ1M1, koniecZ2M1,koniecZ3M1,koniecZ4M1,koniecZ5M1,koniecZ6M1; // wg kolejnosci wykonywania
- int koniecZ1M2, koniecZ2M2,koniecZ3M2,koniecZ4M2,koniecZ5M2,koniecZ6M2; // wg kolejnosci wykonywania
- koniecZ1M1 = tabM1[myints[0]-1];
- koniecZ2M1 = koniecZ1M1 + tabM1[myints[1]-1];
- koniecZ3M1 = koniecZ2M1 + tabM1[myints[2]-1];
- koniecZ4M1 = koniecZ3M1 + tabM1[myints[3]-1];
- koniecZ5M1 = koniecZ4M1 + tabM1[myints[4]-1];
- koniecZ6M1 = koniecZ5M1 + tabM1[myints[5]-1];
- koniecZ1M2 = koniecZ1M1 + tabM2[myints[0]-1];
- if(koniecZ2M1 < koniecZ1M2)
- {
- koniecZ2M2 = koniecZ1M2 + tabM2[myints[1]-1];
- }
- else
- {
- koniecZ2M2= koniecZ2M1 + tabM2[myints[1]-1];
- }
- if(koniecZ3M1 < koniecZ2M2)
- {
- koniecZ3M2 = koniecZ2M2 + tabM2[myints[2]-1];
- }
- else
- {
- koniecZ3M2= koniecZ3M1 + tabM2[myints[2]-1];
- }
- if(koniecZ4M1 < koniecZ3M2)
- {
- koniecZ4M2 = koniecZ3M2 + tabM2[myints[3]-1];
- }
- else
- {
- koniecZ4M2= koniecZ4M1 + tabM2[myints[3]-1];
- }
- if(koniecZ5M1 < koniecZ4M2)
- {
- koniecZ5M2 = koniecZ4M2 + tabM2[myints[4]-1];
- }
- else
- {
- koniecZ5M2= koniecZ5M1 + tabM2[myints[4]-1];
- }
- if(koniecZ6M1 < koniecZ5M2)
- {
- koniecZ6M2 = koniecZ5M2 + tabM2[myints[5]-1];
- }
- else
- {
- koniecZ6M2= koniecZ6M1 + tabM2[myints[5]-1];
- }
- czas = koniecZ6M2;
- if( czas < minCzas) {
- minCzas = czas;
- indeks = i;
- }
- // Koniec wyliczenia
- std::cout <<i<<":"<<' '<< myints[0] << ' ' << myints[1] << ' ' << myints[2] << ' ' << myints[3] << ' ' << myints[4] << ' ' << myints[5] <<" "<< czas <<'\n';
- std::cout << "Czasy koncow zadan w kolejnosci wykonywania na maszynie 1: "<< koniecZ1M1 <<' '<<koniecZ2M1<<' '<<koniecZ3M1<<' '<<koniecZ4M1<<' ' <<koniecZ5M1<<' '<<koniecZ6M1<<'\n';
- std::cout << "Czasy koncow zadan w kolejnosci wykonywania na maszynie 2: "<< koniecZ1M2 <<' '<<koniecZ2M2<<' '<<koniecZ3M2<<' '<<koniecZ4M2<<' ' <<koniecZ5M2<<' '<<koniecZ6M2<<'\n';
- } while ( std::next_permutation(myints,myints+6) );
- std::cout << "After loop: " << myints[0] << ' ' << myints[1] << ' ' << myints[2] << ' ' << myints[3] << ' ' << myints[4] << ' ' << myints[5] << '\n';
- std::cout << "Minimalny czas: " << minCzas << " Indeks: " << indeks<< "\n";
- return 0;
- }
- //Edit & Run
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement