零基础学C#算法(零基础学算法——C#版)
今天本人正在看算法方面的书。作为高中数学忘得差不多的渣渣,实在无力。无奈找了本书,c语言写的,哎。我就把其中代码翻译成C#版好了。此坑能否填平,看我耐性和网络支持条件吧。有生之年能看完的话我会把整个项目上传的。
那就开坑吧。为了直观性舍弃代码规范性,所以如果有人不幸看到,不要吐槽,谢谢。
从第一章开始。
public class _1_1看商品猜价格
{
public void 看商品猜价格()
{
Console.WriteLine("设置商品真实价格");
int 真正价格 = int.Parse(Console.ReadLine());
Console.WriteLine("设置猜测价格");
int 猜测价格 = int.Parse(Console.ReadLine());
int 猜测次数 = ;
while (猜测价格 != 真正价格)
{
猜测次数++;
Console.WriteLine("继续猜");
猜测价格 = int.Parse(Console.ReadLine());
}
Console.WriteLine("你猜了" + 猜测次数+"次才猜中");
//Console.WriteLine(" ");
}
}
public class _1_2斐波那契数列
{
public long i = ;
public void 计算斐波那契数列()
{
//1.3.2 顺推实例:斐波那契数列
Console.WriteLine("设置N");
long N = long.Parse(Console.ReadLine());
tailrecursion(, , N);
//long sum = 0;
//for (long i = 0; i <= N; i++)
//{
// Console.WriteLine(i + " " + sum);
// sum += 斐波那契数列(i);
//}
}
public void tailrecursion(long a, long b, long n)
{
if (n==)
{
return;
}
i++;
Console.WriteLine(i + " " + (a + b));
tailrecursion(b,a+b, n - );
n--;
}
public long 斐波那契数列(long n)
{
if (n <= )
{
return ;
}
else
{
return 斐波那契数列(n - ) + 斐波那契数列(n - );
}
}
}
实现了2种
网上那种 计算斐波那契数列的C#实现(注释的代码)完全是垃圾!垃圾的地方在于递归方法调用2次,在N越来越大的时候非常明显,而用尾递归(tailrecursion
的话飞速算完。不幸的原文用的就是我注释的那部分方法。
class _1_3用逆推法求最初存钱数
{
public void 求最初存钱数()
{
int 本息 = ;
Double 年利率 = 0.0171;
double[] 本利合计 =new double[];
int i;
本利合计[] = 本息;
for ( i = ;i > ; i--)
{
本利合计[i] = (本利合计[i + ] + 本息) / ( + 年利率/);
}
for ( i = ; i > ; i--)
{
Console.WriteLine("第"+i+"月末本利合计:"+本利合计[i]);
}
}
}
class _1_4用枚举法完成填数游戏
{
public void 用枚举法完成填数游戏()
{
int i1, i2, i3, i4, i5;
long multi, result;
for (i1 = ; i1 <= ; i1++)
{
for (i2 = ; i2 <= ; i2++)
{
for (i3 = ; i3 <= ; i3++)
{
for (i4 = ; i4 <= ; i4++)
{
for (i5 = ; i5 <= ; i5++)
{
multi = i1 * + i2 * + i3 * + i4 * + i5;
result = i5 * ;
if (multi * i1 == result)
{
Console.WriteLine(i1 + "" + i2 + "" + i3 + "" + i4 + "" + i5);
Console.WriteLine("X" + i1);
Console.WriteLine("____________");
Console.WriteLine(i5 + "" + i5 + "" + i5 + "" + i5 + "" + i5 + "" + i5);
}
}
}
}
}
}
}
}
1-6使用递归算法计算阶乘
int i;
Console.WriteLine("请输入要求阶乘的一个整数:");
i = int.Parse(Console.ReadLine());
Console.WriteLine(i+"的阶乘结果为:"+fact(i));
}
int fact(int n)
{
if (n <= )
return ;
else
return n * fact(n - );
}
1_8兵乓球比赛日程安排
int[,] a = new int[, ];
public void Run()
{
int m, i, j;
Console.WriteLine("输入参赛选手人数:");
m = int.Parse(Console.ReadLine());
j = ;
for (i = ; i < ; i++)
{
j = j * ;
if (j == m)
break;
}
if (i >= )
{
Console.Write("参赛选手人数必须为2的整数次幂,且不超过64!\n");
}
gamecal(, m);
Console.Write("\n编号");
for (i = ; i <= m; i++)
{
Console.Write( i - +"天 ");
}
Console.WriteLine("\n");
for (i = ; i <= m; i++)
{
for (j = ; j <= m; j++)
Console.Write(" " + a[i, j] + " ");
Console.Write("\n");
}
}
private void gamecal(int k, int n)
{ int i, j;
if (n == )
{
a[k, ] = k; //参赛选手编号
a[k, ] = k + ; //对阵选手编号
a[k + , ] = k + ; //参赛选手编号
a[k + , ] = k; //对阵选手编号
}
else
{
gamecal(k, n / );
gamecal(k + n / , n / );
for (i = k; i < k + n / ; i++) //填充右上角
{
for (j = n / + ; j <= n; j++)
{
a[i, j] = a[i + n / , j - n / ];
}
}
for (i = k + n / ; i < k + n; i++) //填充左下角
{
for (j = n / + ; j <= n; j++)
{
a[i, j] = a[i - n / , j - n / ];
}
}
}
}
1-9用贪婪算法求找零钱

1-11用试探法生成彩票组合

1-12模拟法猜数游戏

1-13模拟法掷骰子游戏

DDD
零基础学C#算法(零基础学算法——C#版)的更多相关文章
- 答好友困惑:Java零基础如何入门,不知道怎么学,迷茫ING
作者:程序员小跃 几个星期之前,我在知乎上看到一个提问,说是:对于完全没有经验零基础自身的数学底子也很弱学习Java应该怎么学习呢?想着类似的问题我也有过回答,并且反馈还是蛮好的,就参考之前的思路回答 ...
- JVM基础系列开篇:为什么要学虚拟机?
跟许多人一样,我一开始接触 Java 虚拟机只是因为面试需要用到,所以硬着头皮看看.所以很多人对于为什么要学虚拟机这个问题,他们的答案都是:因为面试.但我经过了几年的学习和实战,我发现其实学习虚拟机并 ...
- 1、JavaScript 基础一 (从零学习JavaScript)
1:定义:javascript是一种弱类型.动态类型.解释型的脚本语言. 弱类型:类型检查不严格,偏向于容忍隐式类型转换. 强类型:类型检查严格,偏向于不容忍隐式类型转换. 动态类型:运行的时候执行类 ...
- 从头开始学JavaScript 笔记(一)——基础中的基础
原文:从头开始学JavaScript 笔记(一)--基础中的基础 概要:javascript的组成. 各个组成部分的作用 . 一.javascript的组成 javascript ECMASc ...
- 学unity3d需要什么基础
学unity3d需要什么基础?在游戏业发展如火如荼的情境下,很多人开始转行投身于游戏程序开发,而unity3D游戏开发则是他们必须了解和会用的游戏开发工具.在学习之前又应该了解哪些内容呢? unity ...
- 2、JavaScript 基础二 (从零学习JavaScript)
11.强制转换 强制转换主要指使用Number.String和Boolean三个构造函数,手动将各种类型的值,转换成数字.字符串或者布尔值. 1>Number强制转换 参数为原始类型值的转换规 ...
- 学hadoop需要什么基础
最近一段时间一直在接触关于hadoop方面的内容,从刚接触时的一片空白,到现在也能够说清楚一些问题.这中间到底经历过什么只怕也就是只有经过的人才会体会到吧.前几天看到有个人问“学hadoop需要什么基 ...
- [区块链] 密码学中Hash算法(基础)
在介绍Hash算法之前,先给大家来个数据结构中对hash表(散列表)的简单解释,然后我再逐步深入,讲解一下hash算法. 一.Hash原理——基础篇 1.1 概念 哈希表就是一种以 键-值(key-i ...
- Android版数据结构与算法(一):基础简介
版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 一.前言 项目进入收尾阶段,忙忙碌碌将近一个多月吧,还好,不算太难,就是麻烦点. 数据结构与算法这个系列早就想写了,一是梳理总结,顺便逼迫自己把一 ...
- JVM垃圾回收(三)- GC算法:基础
GC算法:基础 在介绍GC算法在实际场景中的实现之前,我们先定义一些必要的术语,以及GC算法的基本准则.具体的细节会因收集器的不同而稍有区别,但是基本上来说,所有的收集器会关注以下两个方面: 找出所有 ...
随机推荐
- 解决创建带有NameSpace的XML文件出现空白xmlns的问题
为了能够让用户自行部署ClickOnce应用程序,需要编写一个生成ClickOnce应用程序的ClickOnce专用安装程序setup.exe,而生成这个setup.exe的方法就是编写一个XML格式 ...
- f.lux在linux下的安装和使用
安装还是蛮容易的~只是装完后在白天色温没什么变化就一直以为没有装成功 https://justgetflux.com/linux.html 这里下载,解压后 安装好以后xflux -l (经纬度) 就 ...
- 关于使用Iscroll.js异步加载数据后不能滑动到最底端的问题解决方案
关于使用Iscroll.js异步加载数据后不能滑动到最底端,拉到最下边又弹回去的问题困扰了我老半天,相信很多朋友都遇到了.我刚好不小心解决了,和大家分享一下.由于各种忙,下边就直接上代码吧. (前提是 ...
- 【wireshark】Wireshark原理分析与二次开发系列
1.版权声明 本系列文章是本人花了很多心血写成,wireshark本是开源软件,本人也乐于技术知识和经验的分享,更是欣赏和推崇开源精神,因此任何看到本文的人都可以随意转载,但只有一个要求: 在大段甚至 ...
- JS-DOM Element方法和属性
JS-DOM Element方法和属性 S-DOM Element方法和属性一,获取html元素1.getElementByID(id)通过对元素的ID访问,这是DOM一个基础的访问页面元素的方法.e ...
- MFC 剪切板的使用、线程介绍
一.MFC 剪切板 CListBox *pList = (CListBox*)GetDlgItem(IDC_LIST1); // 获取ListBox控件句柄 CString strTmp; pList ...
- ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
Struts2未配置Log4j2.xml报错 Log4j2.xml中的配置 log4j的jar包:log4j-core-2.7.jar log4j2只支持xml和json两种格式的配置,所以配置log ...
- WebDriverAPI(3)
获取页面的Title属性 被测网址http:http://www.baidu.com Java语言版本的API实例代码 String url = "http://www.baidu.com& ...
- 析构方法 deinit
/* 析构方法: 对象的内存被回收前被隐式调用的方法, 对应OC的dealloc方法 主要执行一些额外操作, 例如释放一些持有资源, 关闭文件, 断开网络等 */ class FileHandle { ...
- LeetCode题解-23 合并K个排序链表 Hard
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1-&g ...