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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机屏和壳分开了怎么办 oppoa33手机开不了机怎么办 7p背面刮花了怎么办 oppo手机左右两键失灵怎么办 苹果5s屏幕翘起怎么办 0pp0手机有点卡怎么办 手机用久有点卡怎么办 手机有点卡怎么办魅蓝 苹果6排线接反了怎么办 oppo手机解锁密码忘了怎么办 魅蓝5音量小怎么办 魅蓝5密码忘记了怎么办 魅蓝note3锁定了怎么办 魅族mx5系统铃声没有了怎么办 魅族主板坏了怎么办 魅族mx5螺丝滑丝怎么办 魅族魅蓝e手机被锁了怎么办 魅蓝e被锁机了怎么办 魅蓝3s卡顿怎么办 魅族note5玩王者荣耀卡怎么办 魅族手机内存不够怎么办 魅族手机音量小怎么办 魅族mx5指纹解锁失灵怎么办 魅族手机费电快怎么办 魅族mx4pro玩王者荣耀卡怎么办 魅蓝5s玩游戏卡怎么办 魅蓝s6玩游戏卡怎么办 OPPO王者荣耀对局闪退怎么办 魅族手机太慢怎么办 魅蓝5信号不好怎么办 魅蓝数据网速慢怎么办 魅族联通网速慢怎么办 魅族手机wifi信号弱怎么办 魅蓝e2信号差怎么办 魅蓝e2gps信号弱怎么办 魅族网络信号差怎么办 魅族手机gps信号弱怎么办 魅族手机突然没有信号怎么办 魅族手机流量信号不好怎么办 魅族手机wifi信号差怎么办 魅族5s信号不好怎么办