问题:
Jack最近喜欢到学校餐厅吃饭,好吃干净还便宜。
在学校餐厅,有a种汤,b种饭,c种面条,d种荤菜,e种素菜。
为了保证膳食搭配,Jack每顿饭都会点1~2样荤菜,1~2样素菜(不重复)。同时,在Jack心情好的时候,会点一样饭,再配上一种汤。在心情不好的时候,就只吃一种面条。
因为经济有限,Jack每次点餐的总价在min~max之间。Jack想知道,总共有多少种不同的点餐方案。
Input
输入数据第一行包含一个整数T,表示测试数据的组数,对于每组测试数据:
第一行为整数a,b,c,d,e(0
分析与解答:
我写了一遍w了,最后检查了一个小时,发现是e[i]我写成d[i]了md
这题就是数据量小,直接暴力,吃一种食物的两种吃法(吃一个,吃两个)的for遍历也是挺有新意的
代码参考:
https://blog.csdn.net/misdom_tian_ya/article/details/40212183
#include<iostream>
using namespace std;
int main()
{ int t,minm,maxm;cin>>t;while(t--){int a[11],b[11],c[11],d[11],e[11];int a1,b1,c1,d1,e1; int num=0,sum1=0,sum2=0,sum3=0;cin>>a1>>b1>>c1>>d1>>e1;for(int i=0;i<a1;++i) cin>>a[i];for(int i=0;i<b1;++i) cin>>b[i];for(int i=0;i<c1;++i) cin>>c[i];for(int i=0;i<d1;++i) cin>>d[i];for(int i=0;i<e1;++i) cin>>e[i];cin>>minm>>maxm;for(int n4=0;n4<d1;++n4){for(int k4=n4;k4<d1;++k4){if(k4==n4) sum1=d[n4];else sum1=d[n4]+d[k4];for(int n5=0;n5<e1;++n5){for(int k5=n5;k5<e1;++k5){if(k5==n5) sum2=e[n5];else sum2=e[n5]+e[k5];for(int n1=0;n1<a1;++n1){for(int n2=0;n2<b1;++n2){sum3=a[n1]+b[n2];int sum=0;sum+=sum3+sum1+sum2;if(sum>=minm&&sum<=maxm) num++;}}for(int n3=0;n3<c1;++n3){int sum=0;sum+=sum1+sum2+c[n3];if(sum>=minm&&sum<=maxm) num++;}}}}}cout<<num<<endl; }}