⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_61090.htm

📁 vc
💻 HTM
字号:
<p>
序号:61090 发表者:独来毒网 发表日期:2003-11-17 18:06:46
<br>主题:大家帮忙做道题.有分
<br>内容:有A个对.每个对B个人.<BR>每个房间最多能站C个人<BR><BR>要求 所有人能进房间,而且每个对的人要在一个房间<BR><BR>求 要几个房间能把这些人装满.<BR><BR>并说明哪几个对在哪个房间..<BR><BR>如1,2,3,4,5对分别有1,4,5,10,5,2人<BR>每个房间最多站10人. 则要3个房间.房间1装3对,<BR>房间2装1对和2对. 房间3装装4对和5对...<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-11-17 19:09:59
<br>内容:np
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:smallbus 回复日期:2003-11-24 16:10:28
<br>内容:以下是我编的程序,<BR>按照你留的参数测试了一下。<BR>(结果稍有不同,但是完全符合题意,好像比你给的结果效果还要好些)<BR>运行时先输入队数,再输入每个房间可容纳的人数,<BR>然后陆续输入每队的人数,<BR>最后输出结果。<BR>排序和链表的插入算法写的效率不太好,你可以重新写一下。<BR>#include &lt;stdio.h&gt;<BR>#include &lt;stdlib.h&gt;<BR><BR>struct queuenode {<BR>&nbsp;&nbsp;int amount;<BR>&nbsp;&nbsp;int num;<BR>}a[100];<BR>struct ans {<BR>&nbsp;&nbsp;int qnum;<BR>&nbsp;&nbsp;int amount;<BR>&nbsp;&nbsp;struct ans *next;<BR>}answer[100];<BR>void sort(struct queuenode s[],int m) {<BR>&nbsp;&nbsp;int i,j,t;<BR>&nbsp;&nbsp;struct queuenode temp;<BR>&nbsp;&nbsp;for(i=0;i&lt;m;i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;temp=s[i],t=i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(j=i+1;j&lt;m;j++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp; if(s[j].amount&gt;s[i].amount) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s[i]=s[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t=j;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;s[t]=temp;<BR>&nbsp;&nbsp;}<BR>}<BR><BR>void insert(int queuenum,int amount,int i)<BR>{<BR>&nbsp;&nbsp;struct ans *p,*q=&amp;answer[i-1];<BR>&nbsp;&nbsp;p=malloc(sizeof(struct ans));<BR>&nbsp;&nbsp;p-&gt;qnum=queuenum;<BR>&nbsp;&nbsp;p-&gt;amount=amount;<BR>&nbsp;&nbsp;p-&gt;next=NULL;<BR><BR>&nbsp;&nbsp;p-&gt;next=q-&gt;next;<BR>&nbsp;&nbsp;q-&gt;next=p;<BR>&nbsp;&nbsp;printf(&#34; %d,%d,%d\n&#34;,i,q-&gt;next-&gt;qnum,q-&gt;next-&gt;amount);<BR>}<BR><BR>int distribute(struct queuenode s[],int m,int n)<BR>{<BR>&nbsp;&nbsp;int i,j,temp,rooms;<BR>&nbsp;&nbsp;i=rooms=temp=0;<BR>&nbsp;&nbsp;while(i&lt;n) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(s[i].amount!=-1) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp=s[i].amount;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert(s[i].num,s[i].amount,++rooms);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s[i].amount=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=i+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(j&lt;n) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(s[j].amount!=-1&amp;&amp;(temp+s[j].amount)&lt;=m) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;temp+=s[j].amount;<BR>&nbsp;&nbsp;&nbsp;&nbsp;insert(s[j].num,s[j].amount,rooms);<BR>&nbsp;&nbsp;&nbsp;&nbsp;s[j].amount=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;i++;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;return rooms;<BR>}<BR><BR>void del(struct ans *a) {<BR>&nbsp;&nbsp;struct ans *p;<BR>&nbsp;&nbsp;while(a-&gt;next!=NULL) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;p=a;<BR>&nbsp;&nbsp;&nbsp;&nbsp;a=a-&gt;next;<BR>&nbsp;&nbsp;&nbsp;&nbsp;free(p);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;free(a);<BR>}<BR><BR>void delall(struct ans *s,int times)<BR>{<BR>&nbsp;&nbsp;int i;<BR>&nbsp;&nbsp;for(i=0;i&lt;times;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;del(s+i);<BR>}<BR><BR>void disp (int m)<BR>{<BR>&nbsp;&nbsp;int i;<BR>&nbsp;&nbsp;struct ans *p;<BR>&nbsp;&nbsp;printf(&#34;\nyou need %d rooms\n&#34;,m);<BR>&nbsp;&nbsp;for(i=0;i&lt;m;i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;p=answer[i].next;<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;\nroom %d contain\n------------------------------------\n&#34;,m);<BR>&nbsp;&nbsp;&nbsp;&nbsp;do{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;%d queue,amount: %d\n&#34;,p-&gt;qnum,p-&gt;amount);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p=p-&gt;next;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} while(p!=NULL);<BR>&nbsp;&nbsp;}<BR>}<BR><BR>void main () {<BR>&nbsp;&nbsp;int i,queue,room,roomnum;<BR>&nbsp;&nbsp;clrscr();<BR>&nbsp;&nbsp;printf(&#34;input the number of queue\n&#34;);<BR>&nbsp;&nbsp;scanf(&#34;%d&#34;,&amp;queue);<BR>&nbsp;&nbsp;printf(&#34;how many people can live in the room:&#34;);<BR>&nbsp;&nbsp;scanf(&#34;%d&#34;,&amp;room);<BR>&nbsp;&nbsp;for(i=0;i&lt;queue;i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;how many people in this queue:&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;scanf(&#34;%d&#34;,&amp;a[i].amount);<BR>&nbsp;&nbsp;&nbsp;&nbsp;answer[i].next=NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;a[i].num=i+1;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;sort(a,queue);<BR>&nbsp;&nbsp;roomnum=distribute(a,room,queue);<BR>&nbsp;&nbsp;disp(roomnum);<BR>&nbsp;&nbsp;delall(answer,roomnum);<BR>&nbsp;&nbsp;getch();<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -