Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class GFG
- {
- public static int j = 0;
- static void printAllUniqueParts(int n,int []tab)
- {
- int[] p = new int[n];
- int k = 0;
- p[k] = n;
- while (true)
- {
- for (int i = 0; i < k+1; i++)
- {
- tab[j] = p[i];
- j++;
- }
- tab[j] = 0;
- j++;
- int rem_val = 0;
- while (k >= 0 && p[k] == 1)
- {
- rem_val += p[k];
- k--;
- }
- if (k < 0)
- return;
- p[k]--;
- rem_val++;
- while (rem_val > p[k])
- {
- p[k + 1] = p[k];
- rem_val = rem_val - p[k];
- k++;
- }
- p[k + 1] = rem_val;
- k++;
- }
- }
- public static void Main()
- {
- Console.Write("Podaj ilosc: ");
- string s1 = Console.ReadLine();
- int ilosc = int.Parse(s1);
- for (int i = 0; i < ilosc; i++)
- {
- Console.Write("Podaj liczbe: ");
- string s2 = Console.ReadLine();
- int liczba = int.Parse(s2);
- int[] tab = new int[10000];
- printAllUniqueParts(liczba, tab);
- while (j >= 0)
- {
- if (tab[j] != 0)
- {
- Console.Write(tab[j] + " ");
- }
- else
- {
- Console.WriteLine();
- }
- j--;
- }
- j = 0;
- Console.WriteLine();
- Console.WriteLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement