/** 1 */
/** 17 16 */
/** 8 10 */
/** 12 16 */
/** 5 1 */
/** 9 9 */
/** 3 8 */
/** 8 12 */
/** 6 */
/**在上面那个圈中,相隔一个数的两个数叫做一对数,例如1和10,3和5,3和6,求乘积最大的和最小的两对数*/
/**输出格式为max=?*?=?*/
/** min=?*?=?*/
#include<iostream>
using namespace std;
int main(){//解题点在于怎么让线性的数组变成一个圈
int a[16]={1,16,10,16,1,9,8,12,6,8,3,9,5,12,8,17};
int max=1,min=500;
int num=16;//圆圈里数据个数
int p,q;
int k;//乘积和
int m,n,s,t;//存最大最小乘积的乘数
for(int i=0;i<num;i++){
p=(num+i-1)%num ;
q=(i+1)%num ;//num+i-1对num取余,就是当i=num-1时,i+1mod num就等于num-1
k=a[p]* a[q];
if(k>max){
max=k;
m=a[p];
n=a[q];
}
if(k<min){
min=k;
s=a[p];
t=a[q];
}
}
cout<<"max="<<m<<"*"<<n<<"="<<max<<endl;
cout<<"min="<<s<<"*"<<t<<"="<<min<<endl;
}
今天也是收获满满的一天~