Cod sursa(job #3258119)

Utilizator jonesmihneaJones Clifford Mihnea jonesmihnea Data 21 noiembrie 2024 08:47:04
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <iostream>

using namespace std;

int n, m, startj, starti, cont, k, i, j, minn=10, xfin, yfin, mat[101][101],step;
const int dx[]={-2, -1, 1, 2, 2, 1, -1, -2};
const int dy[]={1, 2, 2, 1, -1, -2, -2, -1};

void sol (int x, int y, int step);
void afisare ();
int mutari (int x, int y);
bool inside (int x, int y);

int main()
{
    cin>>n>>m>>starti>>startj;
    mat[starti][startj]=1;
    sol(starti, startj, step);
    return 0;
}
void sol (int x, int y, int step)
{
    mat[x][y]=step;
    if (step==n*m) {
        afisare();
        return;
    }
    minn=10;
    for (k=0 ; k<8 ; k++) {
        i=x+dx[k];
        j=y+dy[k];
        if (inside (i,j) && mat[i][j]==0) {
            cont=mutari(i,j);
            if (cont<=minn) {
                minn=cont;
                xfin=i;
                yfin=j;
            }
        }
    }
}

int mutari (int x, int y)
{
    cont=0;
    for (k=0 ; k<8 ; k++) {
        i=x+dx[k];
        j=y+dy[k];
        if(inside (i,j) && mat[i][j]==0) cont++;
    }
}

bool inside (int x, int y)
{
    return x>0 && y>0 && x<n+1 && y<m+1;
}

void afisare ()
{
    for (i=1 ; i<n+1 ; i++) {
        for(j=1 ; j<m+1 ; j++) {
            cout<<mat[i][j]<<" ";
        }
        cout<<'\n';
    }
}