[問題] C m 取 n (Zerojudge d115)

看板C_and_CPP作者 (0rz)時間15年前 (2009/04/16 12:48), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/1
原題目 http://zerojudge.tw/ShowProblem?problemid=d115 簡單來說就是C m取 n 要輸出所有的可能 以下是我的code... 我一直RE 又找不出錯誤 只好請大家幫我一下 網頁版 http://frsnic.miroko.tw/Tmp/1.c #include<stdio.h> void swap(int arr[], int x, int y); void quicksort(int arr[], int beg, int end); int main(void) { int m, n, i, p, k, t = 0, num[1000], arr[1000]; while(scanf("%d" , &m) && m != 0) { getchar(); if(t && n > 0) printf("\n"); t = 1; for(i = 0; i < m; i ++) scanf("%d " , &num[i]); scanf("%d\n" , &n); for(i = 0; i < n; i ++) arr[i] = i; quicksort(num, 0, m - 1); for(i = 0; i < n; i ++) { printf("%d" , num[i]); if(i == n - 1) printf("\n"); else printf(" "); } p = n - 1; while(arr[0] < m - n && n > 0) { if(arr[n - 1] == m - 1) p --; else p = n - 1; arr[p] ++; for(i = p; i < n; i ++) arr[i + 1] = arr[i] + 1; for(i = 0; i < n - 1; i ++) { k = arr[i]; printf("%d " , num[k]); } k = arr[n - 1]; printf("%d\n" , num[k]); } } return 0; } void swap(int arr[], int x, int y) { int t; t = arr[x]; arr[x] = arr[y]; arr[y] = t; return; } void quicksort(int arr[], int beg, int end) { int i, j, piv = arr[end]; if(end > beg) { i = beg - 1; for(j = beg; j < end; j ++) { if(arr[j] < piv) { i ++; swap(arr, i, j); } } swap(arr, i + 1, end); quicksort(arr, beg, i); quicksort(arr, i + 2, end); } return; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.111.76.71

04/16 18:08, , 1F
已上訴至管理員, 請他查看測資是否超出範圍
04/16 18:08, 1F

04/16 20:02, , 2F
可以參考一下確定 OK 的版本 #170df6Lm 不過我現在看不懂了..
04/16 20:02, 2F

04/17 12:35, , 3F
嗯嗯 謝謝
04/17 12:35, 3F
文章代碼(AID): #19vhYqIt (C_and_CPP)