射击运动员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 ;
}


}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值