編程求解: 運動員打靶,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 閱讀(311)
評論(1) 編輯 收藏 所屬分類:
隨感 、
C++&C