ハトネコエ Web がくしゅうちょう

プログラミングやサーバー・Web制作、チームマネジメントなど得た技術のまとめ

paizaオンラインハッカソンMINAMI編終わったー

解き終わった。

最終問題は、入力フォームのところにWarning出まくってたから心配だったけど、
無事に採点通った、よかった~。

こういう腕試しって面白いですね……。
他にも問題に挑戦するためにpaizaに登録してしまいました、
まんまと策略にハマった感じがする(笑)

あとはRENA編が残ってるな。

自分はMINAMI編の最終問題はこう解きました。

/*** 0=空マス、1=爆弾、2=破裂する爆弾 として、
     破裂後に破裂していない爆弾は落下するとしたら、
     マス目にある爆弾はどうなるかを表示せよ。
     マス目は最大20×20とする。                    ***/

#include <stdio.h>
#include <stdlib.h>

int main(void){
  int i, j, k ;
  int height, width ;
  char **line_str ;
  int **old_bomb, **new_bomb ;

  scanf("%d%d\n", &width, &height) ;

  line_str = malloc(sizeof(char *) * height) ;
  old_bomb = malloc(sizeof(int *) * height) ;
  new_bomb = malloc(sizeof(int *) * height) ;
  for(i=0; i<height; i++){
    line_str[i] = (char *)malloc(sizeof(char) * 50 ) ;
    // width*2 あれば十分だが、入力の手違いを考慮し 50 としている
    *line_str[i] = '\0' ;
    old_bomb[i] = (int *)malloc(sizeof(int) * width) ;
    new_bomb[i] = (int *)malloc(sizeof(int) * width) ;
    gets(line_str[i]) ;

    /** old_bomb[i][j] に、入力された配列を代入していく    **
     ** i : 上からの高さ  j : 左からの数  start from 0 **/
    k = 0 ;
    for(j=0; k= 0; i--){
      if(remain > 0){
	new_bomb[i][j] = 1 ;
	remain-- ;
      }else{
	new_bomb[i][j] = 0 ;
      }
    }
  }
  
  for(i=0; i<height; i++){
    for(j=0; ; ){
      //printf("old_bomb[%d][%d] = %d \n", i, j, old_bomb[i][j] ) ;
      //printf("new_bomb[%d][%d] = %d \n", i, j, new_bomb[i][j] ) ;
      printf("%d", new_bomb[i][j] ) ;
      if(++j == width){
	break ;
      }else{
	printf(" ") ;
      }
    }
    printf("\n") ;
  }
  
  return(0) ;
}

「こここうするといいよ」がありましたらぜひぜひ。