1005 繼續 3n 1 猜想 25

2022-03-03 05:05:04 字數 1693 閱讀 5514

原題:

實現思路:

本題建議採用鍊錶作為儲存結構. 先把讀進來的序列存入鍊錶中, 然後遍歷鍊錶,

從第乙個數開始計算"猜想數", 之後找到這個猜想數, 並把它從鍊錶中刪除.

完整**:

#include #include #include struct list ;

typedef struct list s_list;

typedef struct list *p_list;

void readlist (p_list p, int n); // 為p隨機賦n個值

void printlist (p_list phead); // 列印phead

void del (p_list p, int pos); // 刪除p中第pos個節點

void swap (int *x, int *y); // 交換兩個變數的值

int getlength (p_list p); // 得到p的長度

void order (p_list p); // 對p進行排序

int search (p_list p, int x); // 查詢, 返回找到的位置

/*輸入:

63 5 6 7 8 11

輸出:7 6

輸入:10

88 55 2 10 3 5 6 7 8 11

輸出:88 55 7 6

*/int main () else

pos = search(head, gusnum);

// 如果pos大於0, 說明序列中這個數被覆蓋了, 直接拿掉

if (pos > 0)

}ptr = ptr->next;

}order(head);

printlist(head);

return 0;

}// 引數: p為煉表頭結點, n是需要賦值的個數

void readlist (p_list p, int n)

}// 引數: phead為鍊錶的頭結點

void printlist (p_list phead) else

p = p->next;

}}// 刪除操作

// 引數: p是要刪除鍊錶的頭結點, pos是刪除的位置

void del (p_list p, int pos)

cur = pre->next;

pre->next = cur->next;

free(cur);

}void swap (int *x, int *y)

// 對鍊錶進行從大到小排序

// 引數: p要排序的鍊錶

void order (p_list p)

temp = temp->next;}}

}// 得到鍊錶的 長度

int getlength (p_list p)

return length;

}// 查詢元素在單鏈表中的位置

// 引數: p待查詢的鍊錶, x要查詢的值

// 返回值: 找到返回在鍊錶中第一次出現的位置

int search (p_list p, int x)

index++;

temp = temp->next;

}return -1;

}

1005 繼續 3n 1 猜想 25

卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對n 3進行驗證的時候,我們需要計算3 5 8 4 2 1,則當我們對n 5 8 4 2進行驗證的時候,就可以直接判定卡拉茲猜...

1005 繼續 3n 1 猜想 25

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。...

1005 繼續 3n 1 猜想 25

include include includeint clz int m,int n return 0 int compas const void a,const void b int main int k,i,j int a,b 101 while scanf d k if k 100 k 1 c...