posts - 30,  comments - 28,  trackbacks - 0

编程求解: 运动员打靶,10发子弹命中90环(每分成绩为0到10环不等)
                 求可能情况的总数

解法一:
 #include <stdio.h>
#include <stdlib.h>

int f(int n, int m)
{
 int fn=0,i;
 if(m<0||m>10*n) return 0;
 if(n==1) return 1;
 for(i=0;i<=10;i++)
 fn+=f(n-1,m-i);
 return fn;
}


int main()
{
 int n,m;
 printf("Please enter n and m:");
 scanf("%d%d",&n,&m);
 printf("\n%d发打中%d环有%d种可能.\n",n,m,f(n,m));

 system("PAUSE");
 return 0;


解法二:

 #include"stdio.h"

int main(){

int num =1,i;
for(i=1;i<=10;i++)
num = num *(9+i)/i;
printf("%d",num);
}

个人观点:
  计算机是一门和数学相关的学科,随着这门学科的发展,这种"本质"似乎被弱化了.解法1是很普通的方法,一般人都是这种思路.而解法二则是从数学角度考虑.简洁,快速.
上次去神码笔试,碰到一题
   :给定一个数,如7899,把各位数值相加7+8+9+9=33,3+3=6,用这种方法计算机下去,求最后得到的个位数

我给出的解法:
#include "stdio.h"

int main(){
   int i;
   scanf("%d",&i);
   printf("%d",i%9==0?9:i%9);
   return 0
}//~end 
 

posted on 2006-10-15 18:15 murainwood 阅读(303) 评论(1)  编辑  收藏 所属分类: 随感C++&C


FeedBack:
# re: 算法求解[未登录]
2007-07-08 22:15 | Polly
你好厉害哦!  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2006年10月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

如果真的给你一片天,你敢不敢要?

常用链接

留言簿(3)

随笔分类

随笔档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜