https://www.hackerrank.com/challenges/chessboard-game-again-1チェスボードゲーム...しかし、別の1
私は次のように上記の質問をしようとしたが、回答は間違っていると評価されている。(私は解決策を求めていないのですが、私が求めていますアプローチの欠陥)。
私のコード(C99エラーを無視してください)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int numofmov = 0;
int issafe(int a,int b){
if(a>=0 && a<15 && b>=0 && b<15)
return 1;
return 0;
}
void move(int board[][15]){
for(int i=0;i<15;i++){
for(int j=0;j<15;j++){
if(board[i][j]>0){
board[i][j]--;
if(issafe(board,i-2,j+1)==1) {
numofmov++;
board[i-2][j+1]++;
}
if(issafe(board,i-2,j-1)==1) {
numofmov++;
board[i-2][j-1]++;
}
if(issafe(board,i+1,j-2)==1) {
numofmov++;
board[i+1][j-2]++;
}
if(issafe(board,i-1,j-2)==1) {
numofmov++;
board[i-1][j-2]++;
}
}
}
}
}
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int t;
scanf("%d",&t);
while(t--){
int k;
scanf("%d",&k);
int board[15][15];
for(int j=0;j<15;j++){
for(int h=0;h<15;h++){
board[j][h]=0;
}
}
for(int i=0;i<k;i++){
int x,y;
scanf("%d %d",&x,&y);
board[x-1][y-1]++;
}
int bro=0,mov=numofmov;
while(bro==0){
move(board);
if(numofmov==mov){
bro++;
printf("Second\n");
break;
}
mov = numofmov;
move(board);
if(numofmov==mov){
bro++;
printf("First\n");
break;
}
mov = numofmov;
}
}
return 0;
}
私のアプローチは、我々は何の動きは不可能であるポイントに来るまで、すべての硬貨のためのすべての移動が可能となる上に行くことです。しかし、これはいくつかのテストケースで間違った答えを与えています。
あなたの質問は、リンクに完全に依存しています。リンクは時間の経過とともに壊れてしまう可能性があるので、関連するコードと引用文を質問に含める方が良いでしょう。 – SurvivalMachine
リンクには私のコードがあります.....それは動作していませんか? – yobro97
はい申し訳ありません私はマークから少し速かった。あなたのコードを質問に追加しました。私は 'C++'タグを真っ直ぐな 'c'のように見せてもらった。問題を説明すると、問題が改善されます。 –