コード例 #1
0
ファイル: answer11.c プロジェクト: bhilker/ECE264Solutions
MoveTree * MoveTree_insert(MoveTree * node, 
               const char * state, 
               const char * moves)
{
    if(node==NULL) return MoveTree_create(state,moves);
    int cmp=strcmp(state,node->state);
    if(cmp==0){
        if(strlen(moves)<strlen(node->moves)){
            free(node->moves);
            node->moves=strdup(moves);
        }
    }
    else if(cmp<0) node->left=MoveTree_insert(node->left,state,moves);
    else if(cmp>0) node->right=MoveTree_insert(node->right,state,moves);
    return node;
}
コード例 #2
0
ファイル: answer11.c プロジェクト: mcasanas/264spring2014
//movetree_print
void generateAllHelper(MoveTree * root, int n_moves, const char * state, char * movelist, int ind)
{
  if (ind == n_moves) return;
  int i;
  const char * validMoves = "UDLR";
  for(i=0;i<strlen(validMoves); i++){
    char m = validMoves[i];
    char *dup_state = strdup(state);
    int result = move(dup_state,m);
    if(result==TRUE){
      movelist[ind] = m;
      movelist[ind + 1] = '\0';
      MoveTree_insert(root,dup_state,movelist);
      generateAllHelper(root,n_moves, dup_state, movelist, ind+1);
    }
    free(dup_state);
  }
}