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 ;
}
}
}