Info Menarik

Dedi Yudianto Kopi Jujur Kopi Asli Tanpa Campuran Essen

  • Home
  • Sitemap
  • Disclaimer
  • Contact Us
  • Backlink
  • Privacy Policy
Home » Uncategories » Program Sudoku Dengan Backtracking User Input C++

Sunday, March 8, 2015

Program Sudoku Dengan Backtracking User Input C++

Program Sudoku Dengan Backtracking User Input C++
Kali ini saya akan membagikan script kode program sudoku dengan penyelesaian menggunakan metode backtracking disertai user input baris dan kolom. Script ini saya modifikasi sedemikian rupa agar user bisa input nilai baris dan kolom sesuai keinginan masing-masing. Tapi masih ada beberapa kendala disini yaitu user harus input semua nilai agar program ini berjalan dengan baik.



      /*

     * C++ Program to Solve Sudoku Problem using BackTracking

     */

    #include

    #include

    #include

    #include

    using namespace std;

    #define UNASSIGNED 0

    #define N 9




    bool FindUnassignedLocation(int grid[N][N], int &row, int &col);

    bool isSafe(int grid[N][N], int row, int col, int num);



    /* assign values to all unassigned locations for Sudoku solution

     */

    bool SolveSudoku(int grid[N][N])

    {

        int row, col;

        if (!FindUnassignedLocation(grid, row, col))

           return true;

        for (int num = 1; num <= 9; num++)

        {

            if (isSafe(grid, row, col, num))

            {

                grid[row][col] = num;

                if (SolveSudoku(grid))

                    return true;

                grid[row][col] = UNASSIGNED;

            }

        }

        return false;

    }



    /* Searches the grid to find an entry that is still unassigned. */

    bool FindUnassignedLocation(int grid[N][N], int &row, int &col)

    {

        for (row = 0; row < N; row++)

            for (col = 0; col < N; col++)

                if (grid[row][col] == UNASSIGNED)

                    return true;

        return false;

    }



    /* Returns whether any assigned entry n the specified row matches

       the given number. */

    bool UsedInRow(int grid[N][N], int row, int num)

    {

        for (int col = 0; col < N; col++)

            if (grid[row][col] == num)

                return true;

        return false;

    }



    /* Returns whether any assigned entry in the specified column matches

       the given number. */

    bool UsedInCol(int grid[N][N], int col, int num)

    {

        for (int row = 0; row < N; row++)

            if (grid[row][col] == num)

                return true;

        return false;

    }



    /* Returns whether any assigned entry within the specified 3x3 box matches

       the given number. */

    bool UsedInBox(int grid[N][N], int boxStartRow, int boxStartCol, int num)

    {

        for (int row = 0; row < 3; row++)

            for (int col = 0; col < 3; col++)

                if (grid[row+boxStartRow][col+boxStartCol] == num)

                    return true;

        return false;

    }



    /* Returns whether it will be legal to assign num to the given row,col location.

     */

    bool isSafe(int grid[N][N], int row, int col, int num)

    {

        return !UsedInRow(grid, row, num) && !UsedInCol(grid, col, num) &&

               !UsedInBox(grid, row - row % 3 , col - col % 3, num);

    }



    /* print grid  */

    void printGrid(int grid[N][N])

    {

        for (int row = 0; row < N; row++)

        {

            for (int col = 0; col < N; col++)

                cout<
            cout<
        }

    }



    /* Main */

    int main()

{
int inputA [9][9];
//input matrix A
 cout << "Masukkan Nilai Batasan : "< cout << "------------------"< for (int bar = 0; bar <= 8; bar++)
 {
 for (int kol = 0; kol <= 8; kol++)
 {
 cout << "A ["< cin >> inputA[bar][kol];
 }
 }

 cout << "\nHasil Inputan "< cout << "----------------------------"<

for (int bar = 0; bar <= 8; bar++)
 {

 for (int kolA = 0; kolA <= 8; kolA++)
 {
 cout << " "< }

 cout << " "<  }
cout << "----------------------------"<


        if (SolveSudoku(inputA) == true)

              printGrid(inputA);

        else

            cout<<"No solution exists"<


        return 0;

}


Semoga bermanfaat dan menjadi lebih tambah pengalaman, jika ada tambahan atau saran yang membangun bisa ditambahkan di komentar. 
Terima kasih :D
f
Share
t
Tweet
g+
Share
?
Info Menarik
12:56 AM

2 komentar untuk "Program Sudoku Dengan Backtracking User Input C++"

  1. LoweenMarch 8, 2015 at 1:33 AM

    ini permainan yang belum pernah ane menangin ,
    pusing dulu an kalo main bame sudoku tuh,

    ReplyDelete
    Replies
      Reply
  2. AnonymousMay 5, 2017 at 7:46 PM

    makasih gan artikelnya sangat bermanfaat sekali...
    http://cody.id/produk/blower/solder-uap-cody-858-digital/

    ReplyDelete
    Replies
      Reply
Add comment
Load more...

Newer Post Older Post Home
Subscribe to: Post Comments (Atom)
Find Us :

Search This Blog

Powered by Blogger.

Translate

Visitors

Labels

Dedi Yudianto Kekurangan dan Kelebihan dari Blockchain Kopi Blockchain Komoditas Kopi Berbasis Teknologi Blockchain

Arsip Blog

  • ►  2020 (5)
    • ►  May (1)
    • ►  April (2)
    • ►  January (2)
  • ►  2019 (3)
    • ►  February (1)
    • ►  January (2)
  • ►  2016 (9)
    • ►  July (9)
  • ▼  2015 (27)
    • ►  September (2)
    • ►  August (1)
    • ►  April (1)
    • ▼  March (4)
      • Minuman Berenergi Aman Tidak Berbahaya
      • Cara Cek Estimasi Harga Jual Blog atau Website
      • Manfaat Belimbing untuk Kulit, Rambut, dan Kesehatan
      • Program Sudoku Dengan Backtracking User Input C++
    • ►  February (19)

Popular Posts

  • Contoh Geguritan Bahasa Jawa
    Dalam era modern dan serba tekhnologi ini Bahasa Jawa makin tersisihkan. Hal ini dikarenakan kebanyakan dari pemuda-pemudi jaman sekara...
  • Minuman Berenergi Aman Tidak Berbahaya
    Minuman Berenergi Aman Tidak Berbahaya Salam sobat sekalian, ya tentunya banyak di antara sobat sekalian yang telah mengetahui min...
  • Daftar Pop Slide Android-Tukar dengan Pulsa
    Pop Slide adalah aplikasi penghasil uang bagi pengguna Android yang menggunakan metode hampir sama seperti whaff reward yang sudah ter...
  • Pengguna Windows 10 Siap Dimanjakan Microsoft
    Saat ini Microsoft telah merilis salah satu produk sistem operasinya yang sangat pesat perkembangannya daripada seri sistem operasi pend...
  • Pengertian Running Text
    Running text atau tulisan berjalan adalah salah satu media elektronik yang sangat berguna untuk menyampaikan pesan dan informasi yang ...
  • Kelebihan Kekurangan Pop Slide dan Whaff Reward
    Pada kesempatan kali ini saya akan memberikan sedikit ulasan tentang kelebihan, kekurangan dari aplikasi Pop Slide dan Whaff Reward . Sep...
  • Pengertian Statement of Work
    Apa itu Statement of Work ? Statement of Work adalah dokumen yang menangkap dan mendefinisikan semua aspek proyek Kita. Kita akan me...
  • Manfaat dari Sitemap
    Peringkat sebuah situs web di search engine (mesin pencari) adalah salah satu elemen yang paling penting dari keberhasilan bisnis. Ha...
Copyright 2013 Info Menarik - All Rights Reserved
Design by Mas Sugeng - Published by Evo Templates