射击运动员10枪打90环的打发有多少种

using System;
using System.Collections.Generic;
using System.Text;

namespace Shoot10
{
    class Program
    {
       static int[] Record={0,0,0,0,0,0,0,0,0,0};   //记录状态  
      static int   Num=90;                                                         //射中的总环数  
       static long   Total=0;                                                   //方案总数  
        static void Main(string[] args)
        {
            //int n, m;
           //Console.Write(""+f(10, 90));
            CalculateRing(0, 0);
           // system("PAUSE");
            Console.WriteLine("共有方案"+Total);
           Console.Read();
           throw new Exception("throw Exception test!");
          
        }
        //从第n个位置开始向后搜索满足条件的记录  
  static void CalculateRing(int   n,int   CurNum)  
  {    
  if(n>9)  
  {  
  return;  
  }  
          for(int   i=10;   i>=0;i--)      
  {    
          if(CurNum+i+10*(10-n-1)   <   Num)   //从此位置开始已无满足要求的记录  
                return;    
   
  if(CurNum+i<Num)       //递归搜索  
  {    
     Record[n]=i;  
     CalculateRing(n+1,CurNum+i);  
  }  
   
  if(CurNum+i==Num)     //找到一种方案,输出结果  
  {    
  Record[n]=i;
  for (int k = 0; k < 10; k++)
  {
      Console.Write("" + Record[k] + ",");
    
  }
  Console.Write("/n");      
  Total++;  
          // if(Total==200)   exit(1);   //查看前200种方案,  
  }  
  }  
          for(int   j=n;j<10;j++)     //清除当前位置以后的记录  
              Record[j]=0;  
     return   ;  
  }  


    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值