经典算法代码

简介: 这段代码展示了多个经典算法,包括:穷举法解决“百钱买百鸡”问题;递推法计算“猴子吃桃”问题;迭代法求解斐波那契数列及折纸高度超越珠峰的问题。同时,还提供了希尔排序算法实现及披萨票务订购系统和汉诺塔问题的链表存储解决方案。每部分通过具体案例解释了算法的应用场景与实现方法。

重要算法一览
复制代码

include "stdio.h"
void main()
{
int a,b,c,i,n;
int x,y,z,count;
int day=10,num=1; //day表示天数从第十天逆推 num表示当天桃子的数量
float h=0.0005;
int ci=0;
while(1)
{
printf("\t\t==========经典算法==============\n");
printf("\t\t1、穷举法:百钱买百鸡\n");
printf("\t\t2、递推法:猴子吃桃子\n");
printf("\t\t3、迭代法:斐波那契数列非递归求法\n");
printf("\t\t4、迭代法:折纸超珠峰问题\n");
printf("\t\t0、退出\n");
printf("\t\t================================\n");
printf("请输入您的选择:");
scanf("%d",&n);
switch(n)
{//代码效果参考:https://www.257342.com/sitemap/post.html

    case 1:
           count=0;
           printf("\n某人有100元钱,要买100只鸡。公鸡5元钱一只,母鸡3元钱一只,小鸡一元钱3只。\n问可买到公鸡,母鸡,小鸡各为多少只?\n\n");
           for(x=1;x<=20;x++)
           {
                    //
                for(y=1;y<=33;y++)
                {
                    for(z=1;z<=100;z++)
                    {
                        if(x+y+z==100 && 5*x+3*y+z/3==100&& z%3==0)
                        {
                            count++;
                             printf("第%d种情况:公鸡%d只,母鸡%d只,小鸡%d只\n",count,x,y,z);
                        }
                    }
                }
           }
           break;
    case 2:
           printf("有数量未知的桃子,猴子第一天吃了总数量的一半又多吃一个,\n第二天又吃了剩下的一半有多吃一个,依次类推,到第十天桃子的数量仅剩1个,\n问最初桃子的数量有多少?\n");
           while(day>1)
               num=(num+1)*2;
               day--;
           printf("桃子的数量是:%d个\n",num);

    case 3:
           a=b=1;
           printf("有一对兔子不吃不喝不会死,第三个月成熟,从成熟开始每月繁殖生下一对兔子,\n新生的每对兔子仍是第三个月成熟开始每月生一对兔子,那么每个月兔子的对数如何计算。\n其实这就是著名数列斐波那契数列如下:1 1 2 3 5 8 13 21 34 ......\n");
           printf("打印前20项的值:\n");
           printf("%d\t%d\t",a,b);
           for(i=3;i<=20;i++)
                c=a+b;
                printf("%d\t",c);
                a=b;    
                b=c;
                if(i%5==0)
                    printf("\n");
           printf("\n");
    case 4:
           printf("一张纸厚度是0.5mm厚,珠峰的高度为8848.43米,\n问这张纸对折多少次后会超过珠峰的高度?\n");
           while(h<8848.43)
                  h=h*2;
                  printf("%.3f\t",h);
                  ci++;
                  if(ci%5==0)
                  {
                         printf("\n");
                  }

           printf("总计需要%d次后折纸超过珠峰的高度\n",ci);
    case 0:return;break;
    default:printf("输入有误\n");break;
}

}
}
希尔法排序
/ Note:Your choice is C IDE /
int i,tem,j;
int arr[]={12,4,58,2,6,9,1,15,15,85,94,12,56};
int num,n;//
num=sizeof(arr)/sizeof(arr[0]);

for(i=0;i=1;n/=2){
for(i=n;item&&j>=0;j=j-n){
arr[j+n]=arr[j];
arr[j+n]=tem;
//代码效果参考:https://www.uagu.cn/sitemap/post.html

递归

include
/ 交换两个数据 /
void swap(char a, char b)
char c = a; a = b; b = c;
void perm(char str[], int index, int str_size)
int i = 0,j = 0;
if(index == str_size)
/ 输出当前的排列 /
for(i = 0; i < str_size; i++)
printf("%c ",str[i]);
printf("\n");
else
for(j = index;j < str_size; j++)//每次进行自增后经过递归输出一次结果
printf("%d %d\n",j,index);
swap(&str[j],&str[index]);
perm(str,index+1,str_size);//递归指导index=str_size
swap(&str[j],&str[index]);//将交换后的给交换回来,避免重复
char a[] = "abc";
perm(a,0,3);
披萨订购

include "string.h"
include "stdlib.h"
char name[20];
int p;//代表票数
float Allprice=0.0;//总价
void menu();
void tickts();
void groupby();
{
int bh;
for(;;){
menu();
printf("请输入功能编号:");
scanf("%d",&bh);
switch(bh){
case 1:tickts();break;
case 2:groupby();break;
case 0:exit(0);
default :printf("您输入的编号有误!");break;

void menu(){
printf("\t\t\t==== 比格披萨 ===\n");
printf("\t\t\t 1.普通票订购\n");
printf("\t\t\t 2.团购票订购\n");
printf("\t\t\t 0.退出\n");
void tickts(){
int i;//购票类型
int p,p1,p2[4],p3;//张数

char arr[20];
printf("\n\n\t\t\t===票务类型===\n");
printf("\t\t\t1.成人票(65元/位)\n");
printf("\t\t\t2.老人票(45元/位)\n");
printf("\t\t\t3.儿童票(30元/位)\n");
/票价/
p2[0]=0;
p2[1]=65;
p2[2]=45;
p2[3]=30;
printf("请输入订票您的姓名:");
gets(name);gets(name);

printf("请选择票务类型:");
scanf("%d",&i);
printf("请选择票数:");
scanf("%d",&p);
if(i==1){
strcpy(arr,"成人票");
}else if(i==2){
strcpy(arr,"老人票");
}else if(i==3){
strcpy(arr,"儿童票");
printf("顾客%s您好,您选择了:票务类型:%s 购票张数%d\n",name,arr,p);
Allprice+=Allprice;
Allprice=(float)p2[i]p;
printf("信息确认请按:0/1");
scanf("%d",&p1);
if(p1==1){
printf("核实信息后请支付票款%.2f元\n",Allprice);
printf("是否继续订票0/1:");
scanf("%d",&p3);
if(p3==1){
Allprice=0;
continue;
}else if(p3==0){
break;
}else{
printf("输入数字错误!");
}else if(p1==0){
Allprice=0;
continue;
//代码效果参考:https://www.szworkshop.com.cn/sitemap/post.html
}//循环
}//最后
void groupby(){
float a,b;
printf("输入团购票数");
if(p<2){ printf("两张起订\n"); }else if(p>2){
Allprice=(float)p60;
printf("您需要支付%.2f",Allprice);
a=Allprice-(int)Allprice%100+100;
b=100-(int)Allprice%100;
printf("如果您支付%.2f元,那么我找给你%.2f元\n",a,b);
斐波那契代码
/使用链表的方式来储存
/
//标准的输出库
//字符串的操作类
//
//定义全局步数
int step=0;
//m为盘子数,a,b,c分别为盘子名
void move(int m,char a,char b,char c){
if(m==1)
//第一步从a-c
printf("第%d步move 1 from %c To %c\n",step,a,c);
step++;
//(1)Move(n-1,A,B,C),理解为将上面的n-1纸盘子作为一个整体从A经C移至B
move(m-1,a,c,b);
//此时的a和c并不是()里的a和c
printf("第%d步move %d from %c To %c\n",step,m,a,c);
move(m-1,b,a,c);
char arr[]="hello world";
//s->String d->int c->char最好在前面加上一个空格 f->浮点型
move(3,'A','B','C');

相关文章
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【自然语言处理】TF-IDF算法在人工智能方面的应用,附带代码
TF-IDF算法在人工智能领域,特别是自然语言处理(NLP)和信息检索中,被广泛用于特征提取和文本表示。以下是一个使用Python的scikit-learn库实现TF-IDF算法的简单示例,并展示如何将其应用于文本数据。
215 65
|
2月前
|
机器学习/深度学习 人工智能 算法
【人工智能】传统语音识别算法概述,应用场景,项目实践及案例分析,附带代码示例
传统语音识别算法是将语音信号转化为文本形式的技术,它主要基于模式识别理论和数学统计学方法。以下是传统语音识别算法的基本概述
56 2
|
2月前
|
搜索推荐 算法 Java
|
2月前
|
机器学习/深度学习 运维 算法
深入探索机器学习中的支持向量机(SVM)算法:原理、应用与Python代码示例全面解析
【8月更文挑战第6天】在机器学习领域,支持向量机(SVM)犹如璀璨明珠。它是一种强大的监督学习算法,在分类、回归及异常检测中表现出色。SVM通过在高维空间寻找最大间隔超平面来分隔不同类别的数据,提升模型泛化能力。为处理非线性问题,引入了核函数将数据映射到高维空间。SVM在文本分类、图像识别等多个领域有广泛应用,展现出高度灵活性和适应性。
95 2
|
2月前
|
人工智能 算法 数据可视化
DBSCAN密度聚类算法(理论+图解+python代码)
DBSCAN密度聚类算法(理论+图解+python代码)
|
2月前
|
数据采集 搜索推荐 算法
【高手进阶】Java排序算法:从零到精通——揭秘冒泡、快速、归并排序的原理与实战应用,让你的代码效率飙升!
【8月更文挑战第21天】Java排序算法是编程基础的重要部分,在算法设计与分析及实际开发中不可或缺。本文介绍内部排序算法,包括简单的冒泡排序及其逐步优化至高效的快速排序和稳定的归并排序,并提供了每种算法的Java实现示例。此外,还探讨了排序算法在电子商务、搜索引擎和数据分析等领域的广泛应用,帮助读者更好地理解和应用这些算法。
24 0
|
2月前
|
搜索推荐 算法 Java
插入排序算法(Java代码实现)
这篇文章通过Java代码示例详细解释了插入排序算法的实现过程,包括算法的基本思想、核心代码、辅助函数以及测试结果,展示了如何通过插入排序对数组进行升序排列。
|
2月前
|
机器学习/深度学习 算法 Python
python与朴素贝叶斯算法(附示例和代码)
朴素贝叶斯算法以其高效性和优良的分类性能,成为文本处理领域一项受欢迎的方法。提供的代码示例证明了其在Python语言中的易用性和实用性。尽管算法假设了特征之间的独立性,但在实际应用中,它仍然能够提供强大的分类能力。通过调整参数和优化模型,你可以进一步提升朴素贝叶斯分类器的性能。
48 0
|
3月前
|
并行计算 算法 Python
Dantzig-Wolfe分解算法解释与Python代码示例
Dantzig-Wolfe分解算法解释与Python代码示例
|
2月前
|
算法 C++
惊爆!KPM算法背后的秘密武器:一行代码揭秘字符串最小周期的终极奥义,让你秒变编程界周期大师!
【8月更文挑战第4天】字符串最小周期问题旨在找出字符串中最短重复子串的长度。KPM(实为KMP,Knuth-Morris-Pratt)算法,虽主要用于字符串匹配,但其生成的前缀函数(next数组)也可用于求解最小周期。核心思想是构建LPS数组,记录模式串中每个位置的最长相等前后缀长度。对于长度为n的字符串S,其最小周期T可通过公式ans = n - LPS[n-1]求得。通过分析周期字符串的特性,可证明该方法的有效性。提供的C++示例代码展示了如何计算给定字符串的最小周期,体现了KPM算法在解决此类问题上的高效性。
53 0
下一篇
无影云桌面