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 3: Line 3:
=== Source Code ===
=== Source Code ===
  #include <stdio.h>
  #include <stdio.h>
#include <memory.h>
int A[30][30];
int B[30][2];
int P, Q;
short Flag;
void R(int n, int p, int q)
{
if(Flag || 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]=n;
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);
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);
A[p][q]=0;
return;
}
}
   
   
  int main()
  int main()
  {
  {
  int n, p, q;
  int n, i, j;
int i;
  scanf("%d", &n);
  scanf("%d", &n);
  for(i=1;i<=n;i++){
  for(i=1; i<=n; i++){
  scanf("%d %d", &P, &Q);
  scanf("%d %d", &p, &q);
 
 
Flag=0;
memset(A, 0, sizeof(A));
R(1, 1, 1);
  printf("Scenario #%d:\n", i);
  printf("Scenario #%d:\n", i);
  switch(p*10+q){
  if(Flag){
  case 11:
  for(j=1; j<=P*Q; j++){
puts("A1");
  printf("%c%c", B[j][1]+'A'-1, B[j][0]+'0');
break;
  }
case 34:
}else{
puts("A1C2A3B1D2B3C1A2C3D1B2D3");
  printf("impossible");
break;
case 37:
puts("A1B3D2F1G3E2G1F3E1G2E3C2A3B1C3A2C1D3B2D1F2");
  break;
case 38:
puts("A1B3C1A2C3D1B2D3E1G2E3C2A3B1D2F1H2F3G1E2G3H1F2H3");
break;
  case 43:
puts("A1B3C1A2B4C2A3B1C3A4B2C4");
break;
case 45:
puts("A1B3C1A2B4D3E1C2D4E2C3A4B2D1E3C4A3B1D2E4");
break;
case 46:
puts("A1B3C1A2B4C2D4E2F4D3E1F3D2B1A3C4B2A4C3E4F2D1E3F1");
break;
  case 54:
puts("A1B3A5C4D2B1A3B5D4C2B4A2C1D3C5A4B2D1C3D5");
break;
case 55:
puts("A1B3A5C4A3B1D2E4C5A4B2D1C3B5D4E2C1A2B4D5E3C2E1D3E5");
break;
case 64:
puts("A1B3A5C6D4B5D6C4D2B1A3C2B4A2C1D3B2D1C3D5B6A4C5A6");
break;
case 73:
puts("A1B3C1A2C3B1A3C2B4A6C7B5A7C6A5B7C5A4B2C4B6");
break;
case 83:
puts("A1B3C1A2B4C2A3B1C3A4B2C4A5B7C5A6B8C6A7B5C7A8B6C8");
break;
default:
puts("impossible");
  }
  }
  puts("");
  puts("\n");
  }
  }
  return 0;
  return 0;
  }
  }


/// WA C
/// C


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

Revision as of 19:48, 26 June 2011

Describe AKnight'sJourney here

Source Code

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

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

void R(int n, int p, int q)
{
	if(Flag || 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]=n;

		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);
		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);

		A[p][q]=0;

		return;
	}
}

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

	scanf("%d", &n);
	for(i=1;i<=n;i++){
		scanf("%d %d", &P, &Q);
		
		Flag=0;
		memset(A, 0, sizeof(A));
		R(1, 1, 1);

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

	return 0;
}

/// C

...