Cod sursa(job #810019)

Utilizator ericptsStavarache Petru Eric ericpts Data 9 noiembrie 2012 14:12:30
Problema Tablete Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <cstdio>
#include <cstdlib>

using namespace std;

int m[1002][1002];
bool u[1002*1002];
int n,k;

void afis()
{
    int i,j;
    for(i=1;i<=n;++i)
    {
        for(j=1;j<=n;++j)
            printf("%d ",m[i][j]);
        printf("\n");
    }
    exit(0);
}


void back(int lin,int col)
{

    int i;
    if(col == (n+1))
    {
        lin+=1;
        col =1;
    }
    if(lin == (n+1))
        afis();
    i = m[lin][col-1] + 1;
    if(col != k)
    {
        for(;i<=n*n;++i)
            if(!u[i])
            {
                u[i] = 1;
                m[lin][col] = i;
                back(lin,col+1);
                u[i] = 0;
            }
    }
    else
    {
        for(i+=(i%2);i<=n*n;i+=2 )
            if(!u[i])
            {
                u[i] = 1;
                m[lin][col] = i;
                back(lin,col+1);
                u[i] = 0;
            }
    }
}

int main()
{
    ifstream in("tablete.in");
    freopen("tablete.out","w",stdout);
    in >> n >> k;
    back(1,1);
    return 0;
}