算法问题:唱片问题(求高手赐教,详细的C++代码)

算法问题:唱片问题(求高手赐教,详细的C++代码)

★问题描述:
现在有n首歌,每首歌的长度都是m秒,而一块唱片共可存储s秒长度的音乐。但在存音乐的过程中,我们要求两首歌之间有1秒的间隔。而且存歌的人很迷信,一张唱片存的歌曲数不得为13的倍数。
 
★实验任务:
现在给你n、m和s,请求出最少需要几张唱片才能存储所有歌曲。
★数据输入:
输入数据第一行包含三个整数n(1≤n≤100)、m(1≤m≤s)以及s(1≤s≤10000)。
★结果输出:
输出一行一个整数,即最少所需唱片的张数。
输入示例 输出示例
26 1 100 2


求详细C++代码。

作者: linji7602931   发布时间: 2011-06-17

lz的例子是不有点小问题!
#include<iostream>

using namespace std;

int CDnum(int m, int n, int s);

int main()
{
int m=1, n=2, s=3, iCDnum;
cout<<"请输入歌曲数量n、每首歌的长度m、以及每张唱片的容量s:"<<endl;
cin>>n>>m>>s;
iCDnum=CDnum(m, n, s);
if(iCDnum!=0)
{
cout<<"唱片数:"<<iCDnum<<endl;
}
else
{
cout<<"Error!!!";
}
return 0;
}

int CDnum(int m, int n, int s)
{

if((m<=s&&m>0)&&(n<=100&&n>0)&&(s<=10000&&s>0))
{
int iCDnum, iSongnum;
int im=m+1, is=s+1; //解决每两首歌之间的间隙和最后一首没有的问题!
iSongnum=is/im;
if(iSongnum%13==0)
iSongnum--;
iCDnum=n/iSongnum;
if(n%iSongnum!=0)
iCDnum++;
return iCDnum;
}
else
{
return 0;
}
}

希望能有用!

作者: zhy905692718   发布时间: 2011-06-17

不好意思,不常贴代码,这贴上去还没缩进了!

作者: zhy905692718   发布时间: 2011-06-17