ನಿಯಮ- ಆಧಾರಿತ ನೋಡ್ ರಚನೆ: ವಾಣಿಜ್ಯ ಉತ್ಪನ್ನ + ಉತ್ಪನ್ನ ಪ್ರದರ್ಶನ ನೋಡ್ ಸೆಟ್

ನಾನು ವಾಣಿಜ್ಯ ಉತ್ಪನ್ನ ಪ್ರಕಾರವನ್ನು ನನ್ನ ಸ್ವಂತ ಕಸ್ಟಮ್ ಪ್ರಕಾರದ ನೋಡ್‌ಗೆ ಬಂಧಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ (ಪ್ರದರ್ಶನ ನೋಡ್‌ನಂತೆ ಸೇವೆ ಸಲ್ಲಿಸುತ್ತಿದ್ದೇನೆ). ಹೊಸ ಡೇಟಾವನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ಕಡಿಮೆ ಸ್ಥಳಗಳಲ್ಲಿ ನಮೂದಿಸುವುದು ಗುರಿಯಾಗಿದೆ. ಆದ್ದರಿಂದ ನಾನು ಒಂದು ಪ್ರಕಾರದ ನಿಯಮ ಆಧಾರಿತ ಸೃಷ್ಟಿಯನ್ನು ಇನ್ನೊಂದನ್ನು ರಚಿಸಿದ ಮೇಲೆ ಅನ್ವೇಷಿಸುತ್ತಿದ್ದೇನೆ. ಎರಡೂ ದಿಕ್ಕುಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿವೆ ಎಂದು ತೋರುತ್ತದೆ. ಎರಡರಲ್ಲಿ, ಕಸ್ಟಮ್ ಟೈಪ್ ನೋಡ್ ಅನ್ನು ಬಳಕೆದಾರರು ರಚಿಸಿದ ನಂತರ ವಾಣಿಜ್ಯ ಉತ್ಪನ್ನದ ಸ್ವಯಂಚಾಲಿತ ಸೃಷ್ಟಿಗೆ ನಾನು ಆದ್ಯತೆ ನೀಡುತ್ತೇನೆ, ಅದು ನಂತರ ಉತ್ಪನ್ನ ಪ್ರದರ್ಶನವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.

ಯಾರಾದರೂ ಈ ಆಯ್ಕೆಯ ಮೂಲಕ ಇದ್ದಾರೆಯೇ ಮತ್ತು ಇದನ್ನು ಶಿಫಾರಸು ಮಾಡಬಹುದೇ ಎಂದು ನಾನು ಆಶ್ಚರ್ಯ ಪಡುತ್ತಿದ್ದೆ. ಅಲ್ಲದೆ, ಕಾಮರ್ಸ್_ಪ್ರೊಡಕ್ಟ್_ಡಿಸ್ಪ್ಲೇ_ಮ್ಯಾನೇಜರ್ ಮಾಡ್ಯೂಲ್ ಅಗತ್ಯವಿದೆಯೇ? ಪ್ರಶ್ನೆಯೆಂದರೆ, * ಎ ಮತ್ತು ಬಿ ಎಂಬ ಎರಡು ಸರಣಿಗಳನ್ನು ನೀಡಲಾಗಿದೆ. ಎ ಪೂರ್ಣಾಂಕಗಳನ್ನು ವಿಂಗಡಿಸಲಾಗಿಲ್ಲ. ಬಿ ಯಂತೆಯೇ ಎ ಉದ್ದವಿದೆ ಮತ್ತು ಅದರ ಮೌಲ್ಯಗಳು set -1,0,1 set ನೀವು ಹೊಂದಿರಬೇಕು ...

ನಾನು ಒಂದು ಸಂದರ್ಶನದ ಪ್ರಶ್ನೆಯಲ್ಲಿ ಸಿಲುಕಿಕೊಂಡಿದ್ದೇನೆ .. ಪ್ರಶ್ನೆ,

* ಎರಡು ನೀಡಲಾಗಿದೆ ಎ ಮತ್ತು ಬಿ ಸರಣಿಗಳು ವಿಂಗಡಿಸದ ಪೂರ್ಣಾಂಕಗಳನ್ನು ಹೊಂದಿವೆ. ಬಿ ಒಂದೇ ಹೊಂದಿದೆ ಎ ಮತ್ತು ಅದರ ಮೌಲ್ಯಗಳು ಉದ್ದದಲ್ಲಿವೆ {-1,0,1 set

ಅನ್ನು ಹೊಂದಿಸಿ ನೀವು ಇದರೊಂದಿಗೆ ಸಿ ಶ್ರೇಣಿಯನ್ನು ಹಿಂತಿರುಗಿಸಬೇಕು ಎ.

ನಲ್ಲಿ ಬಿ [i] 0 ಹೊಂದಿದ್ದರೆ ಸಿ [ಐ] ಎ [ಐ]
ಅನ್ನು ಹೊಂದಿರಬೇಕು B [i] -1 ಹೊಂದಿದ್ದರೆ, A [i] C ನಲ್ಲಿರಬೇಕು ಉಪ ರಚನೆಯೊಳಗೆ ಸಿ [0] - ಸಿ [ಐ -1] ಅಂದರೆ. ಎಡ ಸಬ್‌ರೇ
B [i] ಗೆ 1 ಇದ್ದರೆ A [i] ಉಪ ಶ್ರೇಣಿಯಲ್ಲಿ ಸಿ ಯಲ್ಲಿರಬೇಕು ಸಿ [i + 1] - ಸಿ [ಉದ್ದ (ಎ)] ಅಂದರೆ ಬಲ ಸಬ್‌ರೇ.

ಅಂತಹ ಯಾವುದೇ ಪರಿಹಾರವಿಲ್ಲದಿದ್ದರೆ printf ("ಪರಿಹಾರವಿಲ್ಲ"); *

ನಾನು ಈ ಕೆಳಗಿನ ತರ್ಕಗಳನ್ನು ಅನ್ವಯಿಸಿದೆ: -

int indMinus1 = n-1;
int indPlus1 = 0;

//while(indPlus1 < n && indMinus1 > 0)
while(indPlus1 < indMinus1)
{
    while(b[indMinus1] != -1)   {
        if(b[indMinus1] == 0)
            c[indMinus1] = a[indMinus1];
        indMinus1--;
    }
    while(b[indPlus1] != +1)    {
        if(b[indPlus1] == 0)
            c[indPlus1] = a[indPlus1];
        indPlus1++;
    }

    c[indMinus1] = a[indPlus1];
    c[indPlus1] = a[indMinus1];
    b[indMinus1] = 0;
    b[indPlus1] = 0;
    indMinus1--;
    indPlus1++;
}

ಆದರೆ ಇದು ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ ,, ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ {1,2,3} >> {1, -1, - 1} ... ಒಂದು output ಟ್‌ಪುಟ್ ಸಾಧ್ಯವಿದೆ ಅಂದರೆ 3 2,3,1};

ದಯವಿಟ್ಟು ಸಹಾಯ ಮಾಡಿ .... ಅವರ ಯಾವುದೇ ಅಲ್ಗಾರಿದಮ್ ತಂತ್ರವು ಈ ಸಮಸ್ಯೆಗೆ ಲಭ್ಯವಿದೆಯೇ?

ಸರಿಯಾದ ಪರಿಹಾರ ಕೋಡ್

int arrange(int a[], int b[], int c[], int n)
{

for (int i = 0; i < n; ++i) {
    if(b[i] == 0)
        c[i] = a[i];
}

int ci = 0;
for (int i = 0; i < n; ++i) {
    if(b[i] == -1)  {
        while(c[ci] != 0 && ci < i)
            ci ++;
        if(c[ci] != 0 || ci >= i)
            return -1;
        c[ci] = a[i];
        ci++;
    }
}

for (int i = 0; i < n; ++i) {
    if(b[i] == 1)   {
        while(c[ci] != 0 && ci < n)
            ci ++;
        if(c[ci] != 0 || ci <= i)
            return -1;
        c[ci] = a[i];
        ci++;
    }
    }
    return 0;
}
16
задан AGeek 26 June 2011 в 17:32
поделиться