Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

AKnight'sJourney: Difference between revisions

From ZeroWiki
imported>joojis
No edit summary
 
imported>joojis
No edit summary
Line 8: Line 8:
  int B[700][2];
  int B[700][2];
  int P, Q;
  int P, Q;
  bool Flag;
  short Flag;
   
   
  void R(int n, int p, int q)
  void R(int n, int p, int q)
Line 20: Line 20:
  B[n][1]=q;
  B[n][1]=q;
   
   
  Flag=true;
  Flag=1;
  return;
  return;
  }else{
  }else{
Line 47: Line 47:
  void solve()
  void solve()
  {
  {
int p, q;
  scanf("%d %d", &P, &Q);
  scanf("%d %d", &P, &Q);
int p, q;
   
   
  for(p=1; p<=P; p++){
  for(p=1; p<=P; p++){
Line 86: Line 86:
  }
  }


/// WA
/// WA C


=== ... ===
=== ... ===

Revision as of 07:37, 26 June 2011

Describe AKnight'sJourney here

Source Code

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

int A[30][30];
int B[700][2];
int P, Q;
short 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=1;
		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()
{
	int p, q;

	scanf("%d %d", &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 C

...