Problem ze złozonością czasową :<

0

Witam! Proszę o pomoc z ponizszym programem. Jego złozonośc czasowa jest zbyt duża, a chciałabym , zeby wynosiła 15 sekund. Jeśli ktoś z forumowiczów wiedziałby jak temu zadziałac, i mi to wyjasnił lub dał wskazówki byłabym ogromnie wdzięczna . Zadaniem programu , jest to żeby sprawdzał ile kombinacji liter można "zrobic" mając dwa nazwiska np.:
3
ABC
CBA

  • wynik to 2 , a oto kod programu w C++:
#include <iostream>
#include <string>

using namespace std;

int main()
{
    int n;
    string a, b;
    cin >> n >> a >> b;

    int w = 0;

    for(int i = 0; i < n; i++)
    {
        if(a[i] != b[i])
        {
            for(int j = i+1; j < n; j++)
            {
                if(a[i] == b[j])
                {
                    w += j-i;
                    char h = b[i];
                    b[i] = b[j];
                    b[j] = h;
                    break;
                }
            }
        }
    }

    cout << w;
}
0

No cóż widze , ze nikt nie raczy pomóc. No nic.

0

Pewnie dlatego, że OI jeszcze trwa...
Zresztą ten program ma działać dla jakiekolwiek przypadku, jaki sobie tam wpisze, a nie tylko dla przykładowych i testowych. Już pisałaś w innym temacie, gdzie Ci odpisałem, że prawdopodobnie Twój algorytm jest zły.

0

jest to żeby sprawdzał ile kombinacji liter można "zrobic" mając dwa nazwiska

Ty w ogóle rozumiesz treść tego zadania? Bo patrząc po kodzie i po tym co napisałaś to nie...

1 użytkowników online, w tym zalogowanych: 0, gości: 1