2017年5月20日 星期六

ITSA 52 - [Problem 3] 頑皮的比爾 - 參考答案

Difficulty: Eazy
Ref: ITSA 52 - [Problem 3] 頑皮的比爾
/*******************************************************/
/* [Problem 3] 頑皮的比爾                               */
/* Author: awei0905  [at]  awei0905.blogspot.tw        */
/* Version: 2017/05/20                                 */
/*******************************************************/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

struct Node {
 char id;
 Node *next;
};

int main() {
 Node node[102];
 int n;
 scanf("%d", &n);
 while (n--) {
  int k;
  scanf("%d", &k);
  for (int i = 0; i <= k; i++) {
   node[i].id = i;
   node[i].next = &node[i + 1];
  }

  int layer;
  while (scanf("%d", &layer)){
   if (layer == 0) break;
   Node *left = node[0].next;
   Node *center = left->next;
   Node *right = center->next;
   for (int i = 1; i < layer; i++) {
    center->next = left;
    left = center;
    center = right;
    right = right->next;
   }
   node[0].next->next = center;
   node[0].next = left;
  }

  Node *nextNode = node[0].next;
  printf("%d", nextNode->id);
  for (int i = 2; i <= k; i++) {
   nextNode = nextNode->next;
   printf(" %d", nextNode->id);
  }
  printf("\n");
 }
}
Debug: I/O
本題可以用來練習連結串列。
將每層的煎餅視為1個Node,每個Node均有獨立的id,其id代表煎餅的大小。
3
5 2 1 3 5 4 0
50 25 14 49 7 32 48 46 37 6 17 36 42 5 33 8 7 7 41 30 20 10 0
1 2 4 5 3
47 48 49 42 41 40 6 17 18 19 46 45 44 43 9 22 23 24 25 11 20 21 29 28 27 26 1 2 3 4 10 39 38 30 31 32 33 34 35 36 37 5 16 15 14 13 7 8 12 50

沒有留言:

張貼留言