C# 算法入门
来源:互联网 发布:汪峰半壁江山知乎 编辑:程序博客网 时间:2024/06/18 05:21
static void one(){
//假设有两种微生物 X 和 Y
//X 出生后每隔 3 分钟分裂一次(数目加倍),Y 出生后每隔 2 分钟分裂一次(数目加倍)。
//一个新出生的 X,半分钟之后吃掉 1 个 Y,并且,从此开始,每隔 1 分钟吃 1 个 Y。
//现在已知有新出生的 X = 10, Y = 89,求 60 分钟后 Y 的数目。
//如果 X = 10,Y=90 呢?
//本题的要求就是写出这两种初始条件下,60 分钟后 Y 的数目。
int x = 10;
int y = 90;
for(int i=1; i <= 120; i++)
{
if (i % 2 == 1)//思路:将1分钟分成两份,然后当第一个半分钟的时候吃掉x个y,第二次吃的时候就是第三个半分钟了。
{
y -= x;
}
if (i % 6 == 0)
{
x =2*x;
}
if (i % 4 == 0)
{
y =2* y;
}
}
Console.WriteLine("{0}", y);
Console.ReadLine();
}
static void two()
{
//福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
//ABCDE * ? = EDCBA
//他对华生说:“ABCDE 应该代表不同的数字,问号也代表某个数字!”
//华生:“我猜也是!”
//于是,两人沉默了好久,还是没有算出合适的结果来。
//请你利用计算机的优势,找到破解的答案。
//把 ABCDE 所代表的数字写出来。
for (int i = 10000; i < 100000; i++)
{
int a = i / 10000;
int b = i % 10000 / 1000;
int c = i % 10000 % 1000 / 100;
int d = i % 10000 % 1000 % 100 / 10;
int e = i % 10;
if (a == b || a == c || a == d || a == e || b == c || b == d || b == e || c == d || c == e || d == e)
{
continue;
}
int EDCBA = e * 10000 + d * 1000 + c * 100 + b * 10 + a;//i=ABCDE
if (EDCBA % i == 0)
{
Console.WriteLine("a={0},b={1},c={2},d={3},e={4}", a,b,c,d,e);
Console.ReadLine();
}
}
}
static void three()
{
// 有一群海盗(不多于 20 人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人
//平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复......直到开了第 4 瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第 4 瓶酒平分喝下后,大家都倒下了。
// 等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”
// 请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。
int count = 0;
for (int i = 20; i > 0; i--)
{
for (int j = i - 1; j > 0; j--)
{
for (int k = j - 1; k > 0; k--)
{
for (int m = k - 1; m > 0; m--)
{ // 符点数比较,这里误差定为小于0.0000001为成立
if (((1.00 / i + 1.00 / j + 1.00 / k + 1.00 / m) - 1) < 0.0000001)
{
count++;
Console.WriteLine("第一次{0},第二次{1},第三次{2},第四次{3}", i,j,k,m);
}
}
}
}
}
Console.WriteLine("共有{0}种可能",count);
Console.ReadLine();
}
static void four()
{
//某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:
//每位选手需要回答 10 个问题(其编号为 1 到 10),越后面越有难度。答对的,当前分 数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理) 。
//每位选手都有一个起步的分数为 10 分。
//某获胜选手最终得分刚好是 100 分,如果不让你看比赛过程,你能推断出他(她)哪个 题目答对了,哪个题目答错了吗?
//如果把答对的记为 1,答错的记为 0,则 10 个题目的回答情况可以用仅含有 1 和 0 的串 来表示。例如:0010110011 就是可能的情况。
int[] x = new int[10];
f(x, 0);
}
static void f(int[] x, int n)
{
if (n >= x.Length)
{
show(x); // 判断
return;
}
x[n] = 0;
f(x, n + 1);
x[n] = 1;
f(x, n + 1);
}
static void show(int[] x)
{
int s = 10;
for (int i = 0; i < x.Length; i++)
{
if (x[i] == 0)
{
s = s - (i + 1); // 扣掉与题号相同的分数
}
else
{
s = s * 2; // 当前分数翻倍
}
}
if (s == 100)
{
Console.Write("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}" ,x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9]);
Console.ReadLine();
}
}
static void five()
{
// 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
//用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
for(int i=1; i < 33; i++)//遍历母鸡数
{
for (int j = 1; j < 20; j++)//遍历公鸡数
{
int k = 0;
k = 100 - i - j;
if(k % 3 == 0)//判断是否能整除3
{
if (3 * i + k /3 + 5 * j == 100)//判断是否凑足100文钱。
{
Console.WriteLine("公鸡{0}母鸡{1}小鸡{2}", j, i, k);
}
}
}
Console.ReadLine();
}
}
1 0
- C# 算法入门
- C#编程入门_简单算法_15
- C#编程入门15_简单算法
- C#入门
- c#入门
- C#入门
- C#入门
- c#入门
- C#入门
- C#入门
- C#入门
- C#入门
- C# 入门
- C#入门
- c#入门
- C#入门
- C#入门
- C#入门
- Codeforces550A Two Substrings 暴力
- 学习Hadoop第二十五课(单节点HBase建表、插入数据及查询)
- iOS开发之AFN的基本使用
- php源码之路第三章第七节( 数据类型的转化)
- 约瑟夫环问题
- C# 算法入门
- 一张图轻松搞懂javascript event对象的clientX,offsetX,screenX,pageX区别
- 数据结构实验之二叉树五:层序遍历
- android学习1
- 跟我一起学C++之带默认形参值的函数
- HDU1262——寻找素数对
- Python 入门一
- Android 设计模式
- MeiCo's 意识流小窝(不定期更新)