for(i=0;i<4;i++) { for(j=i+1;j<5;j++) { sum[m] = sum[i]+sum[j]; jihe[m][2]={{i,j}}; m++; } }
本人想把第一维设置为一个变量,然后依次每一行存储两个值,i , j ,以此来实现 每行对应不同的 i , j 值,达到最后输入两数和最小时对应的 i , j 的目的。
解决方案
10
本人试下就知道了。
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
15
这个问题没那么复杂,两个数和最小,肯定是他们就是数组中最小的两个数,用两次循环找一下就行了,时间复杂度为O(n),你每两个数相加一下时间复杂度就变成O(n^2)了,参考代码如下
#include "stdio.h" #include "string.h" #include "stdlib.h" #define N 5 int main() { int a[N]; int i = 0; int j = 0; int minIndex1 = 0; int minIndex2 = 1; printf("请输入五个数:(用空格或回车隔开)\n"); for(i=0; i<N; i++){ scanf("%d", &a[i]); } for(j=0; j<N; j++){ if(a[minIndex1] > a[j]){ minIndex1 = j; } } for(j=0; j<N; j++){ if(a[minIndex2]>a[j] && minIndex1!=j){ minIndex2 = j; } } printf("和最小的两个数为:%d和%d\n", a[minIndex1], a[minIndex2]); //system("pause"); return 0; }