Рекурсия → SuDoKu SoLvEr

 
-2
 

SuDoKu SoLvEr

Программа решающая судоку

Решил при помощи рекурсивного перебора

Вводишь n и m, затем заполняется таблица n•n строк и m•m столбцов

Все пробелы заполняются "0"

Ссылка

input:
3 3
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 ...

Рекурсия → Все варианты (переставляя знаки в искомой строке)

 
-1
 

••••↓••••

РИС

••••↑••••

#include<fstream>
#include<string>
#include<algorithm> 
#include<vector>
using namespace std;
ifstream in("input.txt");
ofstream out("output.txt");
vector<string>v;
bool check(string s){
     for(int i=0;i<v.size();i++){
             if(v[i]==s)return false;
             }
             return true;
     }
void variant(string s,int k){
       for(int i=k;i<s.size();i++){
               swap(s[k],s[i]);
               variant(s,k+1);
               if(k==s.size()-2&&check(s)==true)v.push_back(s);

               }
       }
int main(){
    string s;
    in>>s;
    if(s.size()==1)out<<s;
    int k=0;
    variant(s,k);
    for(int i=0;i ...