- 论坛徽章:
- 0
|
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define MAX_BUF 1024
- void get_total(int*);
- int* get_numbers(const int);
- int cmp(const void*, const void*);
- int main()
- {
- int n, i;
- int *vector, *total;
- int all = 0;
-
- //get total & numbers
- get_total(&n);
- vector = get_numbers(n);
- n--;
- total = (int*) malloc(sizeof(int)*n);
- for(i=0; i<n; i++) {
- qsort(vector, n-i+1, sizeof(int), cmp);
- *(vector+n-i-1) += *(vector+n-i);
- *(total+i) = *(vector+n-i-1);
- }
-
- //get total
- for(i=0; i<n; i++)
- all += *(total+i);
- printf("Total cost is: %dn", all);
-
- free(total);
- free(vector);
- return 0;
- }
- void get_total(int* n)
- {
- printf("Get input: ");
- scanf("%d", n);
- getchar(); //jump over 'n'
- }
- int* get_numbers(const int total) //fuck, 还是这里处理输入麻烦
- {
- char buf[MAX_BUF], *tmp;
- int i = 1;
- int* p;
-
- memset(buf, 0, MAX_BUF);
- printf("Get each number of fruit:n");
- fgets(buf, MAX_BUF-1, stdin);
- p = (int*) malloc(total*sizeof(int));
- tmp = strtok(buf, " ");
- *p = atoi(tmp);
- //printf("%dn", *p);exit(0);
- while (i<total) {
- tmp = strtok(NULL, " ");
- *(p+i) = atoi(tmp);
- i++;
- }
- return p;
- }
- int cmp(const void* left, const void* right)
- {
- const int* l = (const int*) left;
- const int* r = (const int*) right;
- return *l < *r;
- }
复制代码 |
|