寻找最完美翅膀:C语言实现黄金分割比例算法
#include <stdio.h>\n#include <stdlib.h>\n#include <math.h>\n\nint compare(const void a, const void b) {\n return ((int)a - (int)b);\n}\n\nvoid findPerfectWings(int N, int wings[]) {\n qsort(wings, N, sizeof(int), compare);\n double golden_ratio = (1 + sqrt(5)) / 2;\n int i, min_diff = wings[N-1], index1 = 0, index2 = 0;\n for (i = 0; i < N-1; i++) {\n double ratio = (double) wings[i+1] / wings[i];\n if (fabs(ratio - golden_ratio) < min_diff) {\n min_diff = fabs(ratio - golden_ratio);\n index1 = i;\n index2 = i + 1;\n }\n }\n printf("%d %d\n", wings[index1], wings[index2]);\n}\n\nint main() {\n int T;\n scanf("%d", &T);\n while (T--) {\n int N;\n scanf("%d", &N);\n int wings[N];\n int i;\n for (i = 0; i < N; i++) {\n scanf("%d", &wings[i]);\n }\n findPerfectWings(N, wings);\n }\n return 0;\n}
原文地址: https://www.cveoy.top/t/topic/pDVu 著作权归作者所有。请勿转载和采集!