void main()
{
long lCount = 0; // 所有打中90环的情况
Shoot(1, 0, ref lCount);
Console.WriteLine(lCount.ToString());
} // 第n次打靶情况
// @param n 第n次打靶
// @param lastMarks 上次打靶成绩
// @param[out] nCount 打中90环的次数
private void Shoot(int n, int lastMarks, ref long lCount)
{
if (10 == n)
{
for (int i = 0; i <= 10; i++)
{
if (90 == lastMarks + i)
{
lCount += 1;
}
}
}
else
{
for (int i = 0; i <= 10; i++)
{
if (90 > lastMarks + i + (10-n)*10)
{
// 已经不能达到90环
continue;
}
else
{
Shoot(n + 1, lastMarks + i,ref lCount);
}
}
}
}
{
long lCount = 0; // 所有打中90环的情况
Shoot(1, 0, ref lCount);
Console.WriteLine(lCount.ToString());
} // 第n次打靶情况
// @param n 第n次打靶
// @param lastMarks 上次打靶成绩
// @param[out] nCount 打中90环的次数
private void Shoot(int n, int lastMarks, ref long lCount)
{
if (10 == n)
{
for (int i = 0; i <= 10; i++)
{
if (90 == lastMarks + i)
{
lCount += 1;
}
}
}
else
{
for (int i = 0; i <= 10; i++)
{
if (90 > lastMarks + i + (10-n)*10)
{
// 已经不能达到90环
continue;
}
else
{
Shoot(n + 1, lastMarks + i,ref lCount);
}
}
}
}
using System ;
public class M{ //public static int[] store;
//相当于设置了全局变量 //这个全局变量sum是包含在M类中的
public static int sum; public M() {
int sum =0;
// int[] store = {1,2,3,4,5,6,7,8,9,0};
} //打印函数 //符合要求的则把它打印出来 public static void Output(int[] store2) {
for(int i = 9; i>=0; --i) {
Console.Write(" {0}",store2[i]);
} Console.WriteLine();
sum++;
} //计算总数,返回sum值 public static int sum2() {
return sum;
} public static void Cumput(int score, int num, int[] store2 ) { //如果总的成绩超过了90环(也就是score<0),或者如果剩下要打靶 //的成绩大于10环乘以剩下要打的次数,也就是说即便后面的都打10环 //也无法打够次数,则退出递归 if(score < 0 || score > (num+1)*10 ) //次数num为0~9 {
return;
} //如果满足条件且达到最后一层 if(num == 0) {
store2[num] = score;
Output( store2);
return; } for(int i = 0; i <= 10; ++i) {
store2[num] = i;
Cumput(score - i, num - 1,store2);
} //Console.Write(" {0}",store2[5]); }} public class myApp{
public static void Main( ) {
int[] store; store = new int[10]; int sum = 0; //int a=90; //int b=9; //Output(); M.Cumput(90,9,store);
sum = M.sum2();
//M.Cumput2(a,b,store); //Console.Write(" {0}",store[3]); //cout<<"总数:"<<sum<<endl; Console.Write(" 总数: {0}",sum);
}} 程序结果一共有92 378种可能。
{ class ShotClass
{
static int resoultNum = 0; [STAThread]
static void Main(string[] args)
{
DoShot(1, 0);
Console.WriteLine("{0}", resoultNum.ToString());
Console.ReadLine();
} static void DoShot(int index, int sum)
{
if (index == 11)
return; if ((index == 3) && (sum < 10))
return;
if ((index == 4) && (sum < 20))
return;
if ((index == 5) && (sum < 30))
return;
if ((index == 6) && (sum < 40))
return;
if ((index == 7) && (sum < 50))
return;
if ((index == 8) && (sum < 60))
return;
if ((index == 9) && (sum < 70))
return;
if ((index == 10) && (sum < 80))
return; int resoult = 0; for (int i = 0; i <= 10; i++)
{
resoult = sum;
resoult += i;
if (resoult == 90)
{
resoultNum++;
return;
}
else
{
DoShot(index + 1, resoult);
}
} }
}
}
{ class ShotClass
{
static int resoultNum = 0; [STAThread]
static void Main(string[] args)
{
DoShot(1, 0);
Console.WriteLine("{0}", resoultNum.ToString());
Console.ReadLine();
} static void DoShot(int index, int sum)
{
if (index == 11)
return; if( sum < (index - 2) * 10)
return; int resoult = 0; for (int i = 0; i <= 10; i++)
{
resoult = sum;
resoult += i;
if (resoult == 90)
{
resoultNum++;
return;
}
else
{
DoShot(index + 1, resoult);
}
} }
}
}