Anonymní profil adzam333 – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil adzam333 – Programujte.comAnonymní profil adzam333 – Programujte.com

 

Příspěvky odeslané z IP adresy 78.98.64.–

adzam333
C / C++ › Permutacie s opakovanim reku…
5. 4. 2016   #209632

Zdravim potreboval by som pomoct s jednym kodom je to program na vypocet permutacii s opakovanim a vyzera asi takto:

#include <stdio.h>

#define MAXN 10
#define MAXSUM 50

int c[MAXN], n, sum;
int a[MAXSUM];

void print(int k)
{
  int i;
  if (k == sum)
  {
    for (i = 0; i < sum; i++)
      printf("%d ", a[i]+1);
    printf("\n");
    return;
  }

  for (i = 0; i < n; i++)
    if (c[i] > 0)
    {
      c[i]--; 
      a[k] = i;  
      print(k+1); 
      c[i]++;  
    }
}

int main(void)
{
  int i;
  scanf("%d", &n);
  for (i = sum = 0; i < n; i++)
  {
    scanf("%d", &c[i]);
    sum += c[i];
  }
  print(0);
  return 0;
}


problem je ze nechapem ako vlastne funguje ta reverzia v tomto programe a co vlastne reprezentuju premenne i a k...mohol by mi niekto laicky vysvetlit fungovanie tohto algoritmu?(teraz nemyslim take vysvetlenie ze tu sa z pola c odrata jednotka nasledne sa zavola ta a ta funkcia atd. ale skor vysvetlenie pricipu toho algoritmu) Dakujem pekne

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý