帮小妹子解一道C语言题?多谢啦!!!

afreeeagle 2003-11-25 05:58:46
有36只鸡?10天杀完,要求每天杀的都是奇数,怎样编程求所有解法?
...全文
45 102 打赏 收藏 转发到动态 举报
写回复
用AI写文章
102 条回复
切换为时间正序
请发表友善的回复…
发表回复
aloxy 2003-12-19
  • 打赏
  • 举报
回复
妹子的帖人气好旺!
有结果了没有?
computer386 2003-12-19
  • 打赏
  • 举报
回复
//改进一下,还有请在VC下编译,TC通不过,不支持这么多重循 环!!!!!!!!!!!!!
1.十个嵌套循环;
2.每个循环取出一个奇数;
3.把这十个数相加;和为36,则打印出来。
===========================================
#include <stdio.h>
#include <stdlib.h>
void CalMeth()
{
int nRe = 0;
int i,j,k,l,m,n,o,p,q,u ;
for (i=1;i<28;i=i+2) //get all jishu in 36
{

for (j=1;j<28;j=j+2)
for (k=1;k<28;k+=2)
for (l=1;l<28;l+=2)
for (m=1;m<28;m+=2)
for (n=1;n<28;n+=2)
for (o=1;o<28;o+=2)
for (p=1;p<28;p+=2)
for (q=1;q<28;q+=2)
for (u=1;u<28;u+=2)
{
nRe = i+j+k+l+m+n+o+p+q+u;
if (nRe==36)
printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d \n",i,j,k,l,m,n,o,p,q,u);
}
}

}

int main(int argc, char* argv[])
CalMeth();
return 0;
}
具体问题具体分析,用这样的穷举,方法笨一点,:) 但对于这个问题能够解决!!!!!!!!!!!!!!!
tiankongzaixiang 2003-12-19
  • 打赏
  • 举报
回复
过几天我给你答复
recover 2003-12-04
  • 打赏
  • 举报
回复
快结贴吧,

要不然,什么垃圾都会贴上来的.
Lingzhengliang 2003-12-04
  • 打赏
  • 举报
回复
第一天杀27只,下来一天杀一只.^_^
beforefly 2003-12-02
  • 打赏
  • 举报
回复
笨死了
这么简单的排列组合都搞不定
一定没学过概率论
看来CSDN没有牛人啊
不和你们玩了
gzgjx 2003-12-02
  • 打赏
  • 举报
回复
这个问题还没结贴啊?!
其实很简单啊。
我们先绘定一个数组A[10],把它的所有项全部置“1”,这样就表示每天杀一只鸡。
还有26只,只要在数组A[10]的基础上每天加上偶数只就可。
我们假定剩下的26只用一个变量Sum来保存,用一个从0到10(不包括10)随机的数确定在第几天再杀“2”只,直到Sum的值变为“0”。所有的可能就是用回溯的方法返回到前一天去杀!!
程序稍后再贴。。。。。。。。。
先小卖一个关子。
yuxh312 2003-12-02
  • 打赏
  • 举报
回复
十个循环的嵌套????

想的真是美,给你个大点的东西,用两三个嵌套就让你的机子完蛋,循环不要用太多
langmng 2003-11-28
  • 打赏
  • 举报
回复
学习
UEAnswer 2003-11-28
  • 打赏
  • 举报
回复
楼上的是天才吧,佩服你,想出来这么秒的方法
lfxzm 2003-11-28
  • 打赏
  • 举报
回复
第一天,杀一只
第二天,杀一只
第三天,杀一只
第四天,杀一只
第五天,杀一只
第六天,杀一只
第七天,杀一只
第八天,杀一只
第九天,杀一只
第十天,杀掉剩下的,嘿嘿嘿嘿!
jronald 2003-11-28
  • 打赏
  • 举报
回复
楼上的完全可以把36改成28
zds0707 2003-11-28
  • 打赏
  • 举报
回复
最易于明白的方法:
1.十个嵌套循环;
2.每个循环取出一个奇数;
3.把这十个数相加;和为36,则打印出来。
===========================================
#include <stdio.h>
#include <stdlib.h>
void CalMeth()
{
int nRe = 0;
int i,j,k,l,m,n,o,p,q,u ;
for (i=1;i<36;i=i+2) //get all jishu in 36
{

for (j=i;j<36;j=j+2)
for (k=j;k<36;k+=2)
for (l=k;l<36;l+=2)
for (m=l;m<36;m+=2)
for (n=m;n<36;n+=2)
for (o=n;o<36;o+=2)
for (p=o;p<36;p+=2)
for (q=p;q<36;q+=2)
for (u=q;u<36;u+=2)
{
nRe = i+j+k+l+m+n+o+p+q+u;
if (nRe==36)
printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d \n",i,j,k,l,m,n,o,p,q,u);
}
}

}

int main(int argc, char* argv[])
CalMeth();
return 0;
}


jronald 2003-11-28
  • 打赏
  • 举报
回复
#include "Stdio.h"

main()
{

int i,z;
z=0;
for (i=0;i<=9;++i) z+=c(12,i)*c(10,9-i);
printf("\n%ld",z);
getch();

}

/*求C m n的值*/
int c(int m,int n)
{
int i;
long p,q;
if(n==0) return 1;
p=1;
q=1;
for(i=n+1;i<=m;++i) p*=i;
for(i=1;i<=m-n;++i) q*=i;
return (p/q);
}

想法是这样,十三个东西排一行,用刀切,有十二个地方可以切。最多九刀分成十段,有c 12 9种分法,自然有(c 12 9)*(c 10 0) 种放法;八刀时分成九段,所以应从要放的十个地方中取出一个c 10 1,放法为(c 12 8) * (c 10 1)种;......;0刀时为(c 12 0)*(c 10 9)。答案是130127628。不知对不对?

to recover(recover): 你算出来答案多少?

recover 2003-11-27
  • 打赏
  • 举报
回复
输出格式
1 1 1 1 1 1 1 1 1 27
1 1 1 1 1 1 1 1 3 25
1 1 1 1 1 1 1 1 5 23
1 1 1 1 1 1 1 1 7 21
1 1 1 1 1 1 1 1 9 19
1 1 1 1 1 1 1 1 11 17
1 1 1 1 1 1 1 1 13 15
1 1 1 1 1 1 1 1 15 13
1 1 1 1 1 1 1 1 17 11
1 1 1 1 1 1 1 1 19 9
1 1 1 1 1 1 1 1 21 7
1 1 1 1 1 1 1 1 23 5
1 1 1 1 1 1 1 1 25 3
1 1 1 1 1 1 1 1 27 1
1 1 1 1 1 1 1 3 1 25
1 1 1 1 1 1 1 3 3 23
1 1 1 1 1 1 1 3 5 21
1 1 1 1 1 1 1 3 7 19
1 1 1 1 1 1 1 3 9 17
1 1 1 1 1 1 1 3 11 15
1 1 1 1 1 1 1 3 13 13
1 1 1 1 1 1 1 3 15 11
1 1 1 1 1 1 1 3 17 9
1 1 1 1 1 1 1 3 19 7
1 1 1 1 1 1 1 3 21 5
1 1 1 1 1 1 1 3 23 3
1 1 1 1 1 1 1 3 25 1
1 1 1 1 1 1 1 5 1 23
1 1 1 1 1 1 1 5 3 21
1 1 1 1 1 1 1 5 5 19
1 1 1 1 1 1 1 5 7 17
1 1 1 1 1 1 1 5 9 15
1 1 1 1 1 1 1 5 11 13
1 1 1 1 1 1 1 5 13 11
1 1 1 1 1 1 1 5 15 9
1 1 1 1 1 1 1 5 17 7
1 1 1 1 1 1 1 5 19 5
1 1 1 1 1 1 1 5 21 3
1 1 1 1 1 1 1 5 23 1
1 1 1 1 1 1 1 7 1 21
1 1 1 1 1 1 1 7 3 19
1 1 1 1 1 1 1 7 5 17
1 1 1 1 1 1 1 7 7 15
1 1 1 1 1 1 1 7 9 13
1 1 1 1 1 1 1 7 11 11
1 1 1 1 1 1 1 7 13 9
1 1 1 1 1 1 1 7 15 7
1 1 1 1 1 1 1 7 17 5
1 1 1 1 1 1 1 7 19 3
1 1 1 1 1 1 1 7 21 1
1 1 1 1 1 1 1 9 1 19
1 1 1 1 1 1 1 9 3 17
1 1 1 1 1 1 1 9 5 15
1 1 1 1 1 1 1 9 7 13
1 1 1 1 1 1 1 9 9 11
1 1 1 1 1 1 1 9 11 9
1 1 1 1 1 1 1 9 13 7
1 1 1 1 1 1 1 9 15 5
1 1 1 1 1 1 1 9 17 3
1 1 1 1 1 1 1 9 19 1
1 1 1 1 1 1 1 11 1 17
1 1 1 1 1 1 1 11 3 15
1 1 1 1 1 1 1 11 5 13
1 1 1 1 1 1 1 11 7 11
1 1 1 1 1 1 1 11 9 9
1 1 1 1 1 1 1 11 11 7
1 1 1 1 1 1 1 11 13 5
1 1 1 1 1 1 1 11 15 3
1 1 1 1 1 1 1 11 17 1
1 1 1 1 1 1 1 13 1 15
1 1 1 1 1 1 1 13 3 13
1 1 1 1 1 1 1 13 5 11
1 1 1 1 1 1 1 13 7 9
1 1 1 1 1 1 1 13 9 7
1 1 1 1 1 1 1 13 11 5
1 1 1 1 1 1 1 13 13 3
1 1 1 1 1 1 1 13 15 1
1 1 1 1 1 1 1 15 1 13
1 1 1 1 1 1 1 15 3 11
1 1 1 1 1 1 1 15 5 9
1 1 1 1 1 1 1 15 7 7
1 1 1 1 1 1 1 15 9 5
1 1 1 1 1 1 1 15 11 3
1 1 1 1 1 1 1 15 13 1
1 1 1 1 1 1 1 17 1 11
1 1 1 1 1 1 1 17 3 9
1 1 1 1 1 1 1 17 5 7
1 1 1 1 1 1 1 17 7 5
1 1 1 1 1 1 1 17 9 3
1 1 1 1 1 1 1 17 11 1
1 1 1 1 1 1 1 19 1 9
1 1 1 1 1 1 1 19 3 7
1 1 1 1 1 1 1 19 5 5
1 1 1 1 1 1 1 19 7 3
1 1 1 1 1 1 1 19 9 1
1 1 1 1 1 1 1 21 1 7
1 1 1 1 1 1 1 21 3 5
1 1 1 1 1 1 1 21 5 3
1 1 1 1 1 1 1 21 7 1
1 1 1 1 1 1 1 23 1 5
1 1 1 1 1 1 1 23 3 3
1 1 1 1 1 1 1 23 5 1
1 1 1 1 1 1 1 25 1 3
1 1 1 1 1 1 1 25 3 1
1 1 1 1 1 1 1 27 1 1
1 1 1 1 1 1 3 1 1 25
1 1 1 1 1 1 3 1 3 23
1 1 1 1 1 1 3 1 5 21
1 1 1 1 1 1 3 1 7 19
1 1 1 1 1 1 3 1 9 17
1 1 1 1 1 1 3 1 11 15
1 1 1 1 1 1 3 1 13 13
1 1 1 1 1 1 3 1 15 11
1 1 1 1 1 1 3 1 17 9
1 1 1 1 1 1 3 1 19 7
1 1 1 1 1 1 3 1 21 5
1 1 1 1 1 1 3 1 23 3
1 1 1 1 1 1 3 1 25 1
1 1 1 1 1 1 3 3 1 23
1 1 1 1 1 1 3 3 3 21
1 1 1 1 1 1 3 3 5 19
1 1 1 1 1 1 3 3 7 17
1 1 1 1 1 1 3 3 9 15
1 1 1 1 1 1 3 3 11 13
1 1 1 1 1 1 3 3 13 11
1 1 1 1 1 1 3 3 15 9
1 1 1 1 1 1 3 3 17 7
1 1 1 1 1 1 3 3 19 5
1 1 1 1 1 1 3 3 21 3
1 1 1 1 1 1 3 3 23 1
1 1 1 1 1 1 3 5 1 21
1 1 1 1 1 1 3 5 3 19
1 1 1 1 1 1 3 5 5 17
1 1 1 1 1 1 3 5 7 15
1 1 1 1 1 1 3 5 9 13
1 1 1 1 1 1 3 5 11 11
1 1 1 1 1 1 3 5 13 9
1 1 1 1 1 1 3 5 15 7
1 1 1 1 1 1 3 5 17 5
1 1 1 1 1 1 3 5 19 3
1 1 1 1 1 1 3 5 21 1
1 1 1 1 1 1 3 7 1 19
1 1 1 1 1 1 3 7 3 17
1 1 1 1 1 1 3 7 5 15
1 1 1 1 1 1 3 7 7 13
1 1 1 1 1 1 3 7 9 11
1 1 1 1 1 1 3 7 11 9
1 1 1 1 1 1 3 7 13 7
1 1 1 1 1 1 3 7 15 5
1 1 1 1 1 1 3 7 17 3
1 1 1 1 1 1 3 7 19 1
1 1 1 1 1 1 3 9 1 17
1 1 1 1 1 1 3 9 3 15
1 1 1 1 1 1 3 9 5 13
1 1 1 1 1 1 3 9 7 11
1 1 1 1 1 1 3 9 9 9
1 1 1 1 1 1 3 9 11 7
1 1 1 1 1 1 3 9 13 5
1 1 1 1 1 1 3 9 15 3
1 1 1 1 1 1 3 9 17 1
1 1 1 1 1 1 3 11 1 15
1 1 1 1 1 1 3 11 3 13
1 1 1 1 1 1 3 11 5 11
1 1 1 1 1 1 3 11 7 9
1 1 1 1 1 1 3 11 9 7
1 1 1 1 1 1 3 11 11 5
1 1 1 1 1 1 3 11 13 3
1 1 1 1 1 1 3 11 15 1
1 1 1 1 1 1 3 13 1 13
1 1 1 1 1 1 3 13 3 11
1 1 1 1 1 1 3 13 5 9
1 1 1 1 1 1 3 13 7 7
1 1 1 1 1 1 3 13 9 5
1 1 1 1 1 1 3 13 11 3
1 1 1 1 1 1 3 13 13 1
1 1 1 1 1 1 3 15 1 11
1 1 1 1 1 1 3 15 3 9
1 1 1 1 1 1 3 15 5 7
1 1 1 1 1 1 3 15 7 5
1 1 1 1 1 1 3 15 9 3
1 1 1 1 1 1 3 15 11 1
1 1 1 1 1 1 3 17 1 9
1 1 1 1 1 1 3 17 3 7
1 1 1 1 1 1 3 17 5 5
1 1 1 1 1 1 3 17 7 3
1 1 1 1 1 1 3 17 9 1
1 1 1 1 1 1 3 19 1 7
1 1 1 1 1 1 3 19 3 5
1 1 1 1 1 1 3 19 5 3
1 1 1 1 1 1 3 19 7 1
1 1 1 1 1 1 3 21 1 5
1 1 1 1 1 1 3 21 3 3
1 1 1 1 1 1 3 21 5 1
1 1 1 1 1 1 3 23 1 3
1 1 1 1 1 1 3 23 3 1
1 1 1 1 1 1 3 25 1 1
1 1 1 1 1 1 5 1 1 23
1 1 1 1 1 1 5 1 3 21
1 1 1 1 1 1 5 1 5 19
1 1 1 1 1 1 5 1 7 17
1 1 1 1 1 1 5 1 9 15
1 1 1 1 1 1 5 1 11 13
1 1 1 1 1 1 5 1 13 11
1 1 1 1 1 1 5 1 15 9
1 1 1 1 1 1 5 1 17 7
1 1 1 1 1 1 5 1 19 5
1 1 1 1 1 1 5 1 21 3
1 1 1 1 1 1 5 1 23 1
1 1 1 1 1 1 5 3 1 21
1 1 1 1 1 1 5 3 3 19
1 1 1 1 1 1 5 3 5 17
1 1 1 1 1 1 5 3 7 15
1 1 1 1 1 1 5 3 9 13
1 1 1 1 1 1 5 3 11 11
1 1 1 1 1 1 5 3 13 9
1 1 1 1 1 1 5 3 15 7
1 1 1 1 1 1 5 3 17 5
1 1 1 1 1 1 5 3 19 3
1 1 1 1 1 1 5 3 21 1
1 1 1 1 1 1 5 5 1 19
1 1 1 1 1 1 5 5 3 17
1 1 1 1 1 1 5 5 5 15
1 1 1 1 1 1 5 5 7 13
1 1 1 1 1 1 5 5 9 11
1 1 1 1 1 1 5 5 11 9
1 1 1 1 1 1 5 5 13 7
1 1 1 1 1 1 5 5 15 5
1 1 1 1 1 1 5 5 17 3
1 1 1 1 1 1 5 5 19 1
1 1 1 1 1 1 5 7 1 17
1 1 1 1 1 1 5 7 3 15
1 1 1 1 1 1 5 7 5 13
1 1 1 1 1 1 5 7 7 11
1 1 1 1 1 1 5 7 9 9
1 1 1 1 1 1 5 7 11 7
1 1 1 1 1 1 5 7 13 5
1 1 1 1 1 1 5 7 15 3
1 1 1 1 1 1 5 7 17 1
1 1 1 1 1 1 5 9 1 15
1 1 1 1 1 1 5 9 3 13
1 1 1 1 1 1 5 9 5 11
recover 2003-11-27
  • 打赏
  • 举报
回复
public class Test{
long sum=0;
String pf=new String();
public void print(String str){
int pr;
for(int i=0;i<str.length();i++){
pr=Integer.parseInt(str.substring(i,i+1),16)*2+1;
System.out.print(Integer.toString(pr)+" ");
}
System.out.println();
}
public static void main(String[] args){
Test a=new Test();
//a.count(Integer.parseInt(args[0]),Integer.parseInt(args[1]) );
a.count(13,10);
System.out.println("sum= "+a.sum);
}
public void count(int m,int n){
if (n==1){
print(pf+Integer.toHexString(m));
sum++;
return;
}
for(int i=0;i<=m;i++){
pf=pf.concat(Integer.toHexString(i));
count(m-i,n-1);
pf=pf.substring(0,pf.length()-1);
}
}
}
36只鸡十天杀完问题的解,JAVA的.
abitz 2003-11-27
  • 打赏
  • 举报
回复
to still_rain(☆雨一直在下☆) :
"26个鸡蛋放10个篮子,每个篮子要放对,不是放个,可以为0对."
与“23个鸡蛋放10个篮子,每个篮子放至少一个”(注意我没写错)
是等价的,请你仔细考虑。

为了节省你的时间,我说一下原因,你看对不对:
首先,"26个鸡蛋放10个篮子,每个篮子要放对,不是放个,可以为0对."
与“13个鸡蛋放10个篮子,每个篮子放至少0个“ 是等价的;
它又与“23个鸡蛋放10个篮子,每个篮子放至少一个”等价。
recover 2003-11-27
  • 打赏
  • 举报
回复
public class Test{
long sum=0;
String pf=new String();
public static void main(String[] args){
Test a=new Test();
//a.count(Integer.parseInt(args[0]),Integer.parseInt(args[1]) );
a.count(13,10);
System.out.println("sum= "+a.sum);
}
public void count(int m,int n){
if (n==1){
//System.out.println(pf+Integer.toHexString(m));
sum++;
return;
}
for(int i=0;i<=m;i++){
pf=pf.concat(Integer.toHexString(i));
count(m-i,n-1);
pf=pf.substring(0,pf.length()-1);
}
}
}
13个苹果放在十个抽屈问题的.JAVA的.
recover 2003-11-27
  • 打赏
  • 举报
回复
共497420种方法
recover 2003-11-27
  • 打赏
  • 举报
回复
public class Test{
long sum=0;
String pf=new String();
public static void main(String[] args){
Test a=new Test();
//a.count(Integer.parseInt(args[0]),Integer.parseInt(args[1]) );
a.count(13,10);
System.out.println("sum= "+a.sum);
}
public void count(int m,int n){
if (n==1){
System.out.println(pf+m);
sum++;
return;
}
for(int i=0;i<=m;i++){
pf=pf.concat(Integer.toHexString(i));
count(m-i,n-1);
pf=pf.substring(0,pf.length()-1);
}
}
}
加载更多回复(82)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧