[問題] C m 取 n (Zerojudge d115)
原題目
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
04/16 20:02, 2F
→
04/17 12:35, , 3F
04/17 12:35, 3F