原題:
實現思路:
本題建議採用鍊錶作為儲存結構. 先把讀進來的序列存入鍊錶中, 然後遍歷鍊錶,
從第乙個數開始計算"猜想數", 之後找到這個猜想數, 並把它從鍊錶中刪除.
完整**:
#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...