某人有8 角的邮票5 张,1 元的邮票4 张,1 元8 角的邮票6 张,用这些邮票中的一张或若干张可以得到多少中不同的邮资?
我的代码:
#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
map<float, bool> value;
for (int i = 0; i <= 5; i++)
{
for (int j = 0; j <= 4; j++)
{
for (int k = 0; k <= 6; k++)
{
float price = 0.8*i + j + 1.8*k;
value.insert(pair<float, bool>(price, true));
}
}
}
cout << value.size()-1 << endl;
}
心得:
用惯了python··· c++的stl用的真的不是很熟
map的用法,以及value.size()可以直接得到map容器内元素个数。
其实用这个也主要是想利用树形结构来加速索引吧。但后来发现好像set容器就可以完成,下面是别人的一个题解。
链接:https://www.nowcoder.com/questionTerminal/b6735b1bd4ff488fb9a9032457410f66
来源:牛客网
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
set<int> st;
for(int i=0;i<=5;i++){
for(int j=0;j<=4;j++){
for(int k=0;k<=6;k++){
if(i==0&&j==0&&k==0) continue; //至少用一张邮票
t = i*8 + j*10 + k*18;
st.insert(t);
}
}
}
cout<<st.size()<<endl;
return 0;
}