Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace WindowsFormsApplication1
- {
- public partial class Form1 : Form
- {
- int n;
- public Form1()
- {
- InitializeComponent();
- }
- void init(int[] st, int k)
- {
- st[k] = 0;
- }
- bool succesor(int[] st, int k)
- {
- if (st[k] < n)
- {
- st[k]++;
- return true;
- }
- return false;
- }
- bool valid(int[] st, int k)
- {
- for (int i = 0; i < k; i++)
- if (st[i] >= st[k])
- return false;
- if (suma(st, k) > n)
- return false;
- return true;
- }
- bool solutie(int []st,int k)
- {
- return suma(st,k)==n;
- }
- int suma(int []st, int k)
- {
- int s=0;
- for(int i=0;i<=k;i++)
- s+=st[i];
- return s;
- }
- void afisare(int[] st, int k)
- {
- for (int i = 0; i < k; i++)
- textBox2.AppendText(st[i].ToString()+"+");
- textBox2.AppendText(st[k].ToString()+"\r\n");
- }
- private void button1_Click(object sender, EventArgs e)
- {
- n = Convert.ToInt16(textBox1.Text);
- int[] st = new int[n];
- int k, nr = 0;
- bool a, ev = false;
- k = 0;
- textBox2.Clear();
- while (k >= 0)
- {
- do
- {
- a = succesor(st, k);
- if (a) ev = valid(st, k);
- }
- while (a && !ev);
- if (a)
- if (solutie(st,k))
- {
- afisare(st, k);
- nr++;
- }
- else
- {
- k++;
- init(st, k);
- }
- else k--;
- }
- textBox2.AppendText("\r\n____\r\n" + nr.ToString() + " solutii");
- }
- private void label1_Click(object sender, EventArgs e)
- {
- }
- private void textBox2_TextChanged(object sender, EventArgs e)
- {
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement