E D R , A S I H C RSS

AKnight'sJourney (rev. 1.1)

AKnight's Journey

Describe AKnight'sJourney here

Source Code

#include <stdio.h>
#include <memory.h>

int A[30][30];
int B[700][2];
int P, Q;
bool Flag;

void R(int n, int p, int q)
{
	if(Flag){
		return;
	}else if(1>p || p>P || 1>q || q>Q || A[p][q]){
		return;
	}else if(n==P*Q){
		B[n][0]=p;
		B[n][1]=q;

		Flag=true;
		return;
	}else{
		B[n][0]=p;
		B[n][1]=q;
		A[p][q]=1;

		R(n+1, p-2, q-1);
		R(n+1, p-2, q+1);
		R(n+1, p-1, q-2);
		R(n+1, p-1, q+2);
		R(n+1, p+1, q-2);
		R(n+1, p+1, q+2);
		R(n+1, p+2, q-1);
		R(n+1, p+2, q+1);

		if(Flag){
			return;
		}
		A[p][q]=0;
		B[n][0]=0;
		B[n][1]=0;
	}
}

void solve()
{
	scanf("%d %d", &P, &Q);

	int p, q;

	for(p=1; p<=P; p++){
		for(q=1; q<=Q; q++){
			if(!Flag){
				R(1, p, q);
			}else{
				return;
			}
		}
	}
}

int main()
{
	int n;
	int i, j;

	scanf("%d", &n);
	for(i=1; i<=n; i++){
		Flag=0;
		memset(A, 0, sizeof(A));
		printf("Scenario #%d\n", i);
		solve();
		if(Flag){
			for(j=1; j<=P*Q; j++){
				printf("%c%c", B[j][1]+'A'-1, B[j][0]+'0');
			}
		}else{
			printf("impossible");
		}
		printf("\n\n");
	}

	return 0;
}

/// WA

...


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:21
Processing time 0.0281 sec