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