View Full Version : راحت ترین روش حل 8 وزیر
  
ghasemloo
سه شنبه 18 آذر 1393, 23:28 عصر
سلام :لبخندساده:
دنبال راحترین روش حل معمای 8 وزیر  هستم
به نظر شما راحترین روش کدومه؟؟
اگه سورسی هم دارید که توضیحات خط به خط داره رو لطفا بذارید
ممنون
ghasemloo
سه شنبه 25 آذر 1393, 12:50 عصر
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 chessfull
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            
            for (int i = 1; i < 9; i++)
            {
                for (int j = 1; j <9; j++)
                {
                    if (i != j)
                    {
                        for (int x = 1; x < 9; x++)
                        {
                            if (x != i && x != j)
                            {
                                for (int y = 1; y < 9; y++)
                                {
                                    if (y != i && y != j && y != x)
                                    {
                                        for (int g = 1; g < 9; g++)
                                        {
                                            if (g != y && g != x && g != j && g != i)
                                            {
                                                for (int h = 1; h < 9; h++)
                                                {
                                                    if (h != g && h != y && h != x && h != i && h != j)
                                                    {
                                                        for (int m = 1; m < 9; m++)
                                                        {
                                                            if (m != h && m != g && m != y && m != x && m != j && m != i)
                                                            {
                                                                for (int n = 1; n < 9; n++)
                                                                {
                                                                    if (n != m && n != h && n != g && n != y && n != x && n != j && n != i)
                                                                    { 
                                                                    int []a={i,j,x,y,g,h,m,n};
                                                                    tabe(a);
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
            public void tabe(int[]b)
            {
                bool d = false;
                bool t = false;
                int count=b.Count();
                for (int i = 0; i < count;i++)
                {
                    for (int j = 0; j < count; j++)
                    {
                        if (i != j)
                        {
                            if (Math.Abs(b[i] - b[j]) == Math.Abs(i - j))
                            {
                                d = true;
                                break;
                            }
                        }
                      
                    }
                    if (d == true)
                    {
                        t = true;
                        break;
                    }
                }
                if (t == false)
                {
                    string cnv = "";
                    foreach (var mgh in b)
                    {
                        cnv += mgh.ToString();
                    }
                    dtv(b);
                  
                   MessageBox.Show(cnv);
                }
        }
            public void dtv(int[] c)
            {
                dataGridView1.Rows.Clear();
                dataGridView1.Columns.Clear();
                int count = c.Count();
                for (int i = 1; i <= count; i++)
                {
                    dataGridView1.Columns.Add(i.ToString(), i.ToString());
                    dataGridView1.Columns[i-1].Width = 20;
                }
                for (int x = 1; x <= count; x++)
                {
                    dataGridView1.Rows.Add();
                    for (int y = 1; y <= count; y++)
                    {
                        if(y%2==0)
                        dataGridView1.Columns[y-1].DefaultCellStyle.BackColor = Color.Yellow;
                    }
                }
                for (int p = 1; p <= count; p++)
                {
                    for (int k = 1; k <= count; k++)
                    {
                        if (k == Convert.ToInt32(c[p-1]))
                        {
                            dataGridView1.Rows[p-1].Cells[k-1].Value = "{i}";
                            break;
                        }
                    }
                }
                
            }
           
              
          
         
    }
}
hamid_hr
سه شنبه 25 آذر 1393, 13:01 عصر
یه بخش داره این سایت به نام الگورییتم 
http://barnamenevis.org/search.php?searchid=3201407
اونجا بهتر به جواب میرسی
ghasemloo
سه شنبه 25 آذر 1393, 23:18 عصر
به جواب رسیدم ....
گذاشتم اینجا که اگه کس به دردش خوردبرداره........
همین    :)
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.