0
已解决
崔乔昕
中级光能
中级光能
题目链接: 酷町堂:4545
4545 开心郊游
经验值:800 时间限制:1000毫秒 内存限制:128MB
题目描述 De**ion
有四个人相约一起郊游,他们四个人的年龄加在一起是97岁,最小的年龄是10岁,他和年龄最大的那个人岁数和比另外两个人岁数和大7岁,请你求出这四个人的年龄可能是多少。
输入描述 Input De**ion
无
输出描述 Output De**ion
可能有多组解,有几组输出几行(按字典序排序),每一行四个数从小到大,分别代表这四个人的年龄,年龄之间用空格隔开。
样例输入 Sample Input
无
样例输出 Sample Output
无
数据范围及提示 Data Size & Hint
年龄可能相同
不废了,大佬们康康
#include <iostream>
using namespace std;
int maxa=-0x3f3f3f3f;
int mina=0x3f3f3f3f;
int main(){
for(int i=10;i<=87;i++){
for(int j=10;j<=87;j++){
for(int k=10;k<=87;k++){
maxa=max(maxa,max(i,max(j,k)));
mina=min(mina,min(i,min(j,k)));
if(10+i+j+k==97&&maxa==i&&mina==j){
cout<<10<<" "<<j<<" "<<k<<" "<<i<<endl;
}
if(10+i+j+k==97&&maxa==i&&mina==k){
cout<<10<<" "<<k<<" "<<j<<" "<<i<<endl;
}
if(10+i+j+k==97&&maxa==j&&mina==i){
cout<<10<<" "<<i<<" "<<k<<" "<<j<<endl;
}
if(10+i+j+k==97&&maxa==j&&mina==k){
cout<<10<<" "<<k<<" "<<i<<" "<<j<<endl;
}
if(10+i+j+k==97&&maxa==k&&mina==i){
cout<<10<<" "<<i<<" "<<j<<" "<<k<<endl;
}
if(10+i+j+k==97&&maxa==k&&mina==j){
cout<<10<<" "<<j<<" "<<i<<" "<<k<<endl;
}
}
}
}
return 0;
}
0
已采纳
薛乘志
初级启示者
初级启示者
你这是把简单的问题复杂化了啊......
首先在循环时就可以控制哪个人是年龄最小的:
for(int i=10;i<=97;i++){
for(int j=i;j<=97;j++){
for(int k=j;k<=97;k++){
....
}
}
} // 保证i<=j<=k
然后的判断就简单了:
if(10+i+j+k==97&&10+k-i-j==7){
cout....
}
0
0
0
李奕歌
初级天翼
初级天翼
暴力输出(doge
10 10 35 42
10 11 34 42
10 12 33 42
10 13 32 42
10 14 31 42
10 15 30 42
10 16 29 42
10 17 28 42
10 18 27 42
10 19 26 42
10 20 25 42
10 21 24 42
10 22 23 42
0
0
0