首页 > 学院 > 开发设计 > 正文

某人有8角的邮票5张,1元的邮票4张,1元8角的邮票6张,用这些邮票中的一张或若干张可以得到多少中不同的邮资?

2019-11-06 09:19:54
字体:
来源:转载
供稿:网友

某人有8角的邮票5张,1元的邮票4张,1元8角的邮票6张,用这些邮票中的一张或若干张可以得到多少中不同的邮资? 

两种思路:

1.用数组方式,先求总数,然后排序,然后去掉重复数据,之后消除0,最后输出,求得不同的个数。

2.直接用容器,比较简单。

1.

#include <iostream>using namespace std;void sort(float a[],int n){	float temp;	for(int i=0;i<n;++i)		for(int j=i;j<n;++j)		{			if(a[i]>=a[j])			{				temp=a[i];				a[i]=a[j];				a[j]=temp;			}		}}int main(){	int sum=0;	float s[1000];	float s1[1000];	for(int i=0;i<=5;++i)	{		for(int j=0;j<=4;++j)		{			for(int k=0;k<=6;++k)			{				s[sum++]=0.8*i+j+1.8*k;			}		}	}	for(int p=0;p<sum;++p)		cout<<s[p]<<" ";	cout<<endl<<"总数:"<<sum<<endl;	sort(s,sum);	for(int b=0;b<sum;++b)		cout<<s[b]<<" ";//	cout<<endl<<"排好序:"<<sum<<endl;	cout<<endl;		//去除0 	int u=0;	for(int d=0;d<sum;++d)	{		if(s[d]!=s[d+1]&&s[d]!=0)			s1[u++]=s[d];	}	for(int m=0;m<u;++m)		cout<<m<<" "<<s1[m]<<endl;	cout<<endl<<"去除0:"<<u<<endl;	return 0;}

2.

#include <iostream>#include <set>using namespace std;int main(){	set<float> fset;//double不精确	int i,j,k,count;	for(i=0;i<=5;++i)		for(j=0;j<=4;++j)			for(k=0;k<=6;++k)				fset.insert(0.8*i+1*j+1.8*k);	cout<<"总数:"<<fset.size()<<endl;	set<float>::iterator it;	cout<<"去除重复和0:"<<endl;	for(count=1,it=fset.begin();it!=fset.end();++it,++count)		cout<<count<<" "<<*it<<endl;	return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表