黑马程序员技术交流社区
标题: 求解:如何程序实现! [打印本页]
作者: 不怕 时间: 2013-6-22 12:26
标题: 求解:如何程序实现!
有一头刚出生的牛,出生后第四年能生一头小牛,以后每年能生一头小牛,小牛在第4年里也能生一头小牛,如此反复。问第20年能有多少头牛?
前提:牛不会死。要求用C#编程
运行后结果是:872,这个结果绝对是正确的
作者: 许大虾 时间: 2013-6-22 13:14
- ublic static void CowCal()
- {
- Console.WriteLine("有一头刚出生的牛,出生后第四年能生一头小牛,以后每年能生一头小牛,小牛在第4年里也能生一头小牛,如此反复。问第N年能有多少头牛?");
- Console.Write("请输入N:");
- int n = Convert.ToInt32(Console.ReadLine());
- int total = Cal(n);
- Console.Write("结果是:" + total.ToString() + "头牛");
- }
- private static int Cal(int n)
- {
- int m = 1;
- for (int i = 1; i <= n; i++)
- {
- if (i % 4 == 0)
- {
- m = m * 2;
- }
- }
- return m;
- }
复制代码
作者: 万大述 时间: 2013-6-24 17:54
你重新对答案看下,结果应该是345头吧,参考代码:
static void Main(string[] args)
{
int year = 0;
Console.WriteLine("有一头刚出生的牛,出生后第四年能生一头小牛,以后每年能生一头小牛,小牛在第4年里也能生一头小牛,如此反复。问第N年能有多少头牛?");
Console.Write("请输入年数N:");
year = ReadInt();
int[] countLabel = new int[year+1];
for (int i =0 ; i < year+1; i++)
{
if (i < 4)//四年内只有一头牛
{
countLabel[i] = 1;
}
else if (i > 3 && i < 8)//4~8年间每年增加一头牛
{
countLabel[i] = i - 2;
}
else
{
countLabel[i] = countLabel[i - 4] + countLabel[i - 1];//8年以上的牛数为四年大的牛数加上去你的牛数
}
}
Console.Write("第"+year+"年有" +countLabel[year].ToString()+ "头牛");
Console.ReadKey();
}
static int ReadInt() //该方法要求用户输入一个大于或等于0的整数并返回。
{
int number = 0;
do
{
try
{
number = Convert.ToInt32(Console.ReadLine());
if (number >= 0)
{
break;
}
else
{
continue;
}
}
catch
{
Console.WriteLine("请输入整数!");
continue;
}
} while (true);
return number;
}
作者: 彭家贰小姐 时间: 2013-7-9 10:53
//第一年1头
//第二年1头
//第三年1头
//第四年2头
//第五年3头
//第六年4头
//第七年6头
//第八年9头
//····
//可以找出规律
//即隔一年相加等于后面年份的后一年
//第一年的和第三年的加起来等于第四年的
//第二年的和第五年的加起来等于第六年的
//依此类推 可以用递归来做
class MyTest
{
static void Main()
{
Console.WriteLine("请输入年份");
int alter = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("结果:" + GetValue(alter));
Console.ReadKey();
}
public int GetValue(int year)
{
if (year < 4) return 1;
int[] arr = new int[4] { 0, 1, 1, 1 };
int[] yearArr = new int[year + 1];
yearArr[0] = 0;
yearArr[1] = 1;
yearArr[2] = 1;
yearArr[3] = 1;
yearArr[year] = GetValue(year -3) + GetValue(year -1);
return yearArr[year];
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |