编程求解: 运动员打靶,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 阅读(302)
评论(1) 编辑 收藏 所属分类:
随感 、
C++&C