当前位置:首页 » 编程软件 » 算法编程题

算法编程题

发布时间: 2022-05-02 09:23:20

c语言算法

按你要求空瓶倒

#include<stdio.h>
intmain()
{
intnum[3],numSave,i,j;
printf("请输入3个数:");
scanf("%d%d%d",&num[0],&num[1],&num[2]);

for(i=0;i<3;i++)
{
for(j=i+1;j<3;j++)
{
if(num[i]>num[j])
{
numSave=num[i];
num[i]=num[j];
num[j]=numSave;
}

}
}
printf("从小到大排列:%d%d%d",num[0],num[1],num[2]);
return0;
}

❷ 数据结构算法编程题,删除带头结点的单链表中最大元素或最小元素

//删除单链表中最大元素
Del-max(link a){
int tmp;
element *p;
element *max;
p=a; //指针,用于遍历链表,取数与当前最大结点值比较
max=a; //指针,用于记录最大元素所在位置(未考虑有多个最大元素)
tmp=p->data; //变量,用于记录当前最大结点值
while(a->next!=null){
p=p->next;
if(p->data>tmp){ 、//如果当前指针所指结点值大于当前tmp所保留的值,则记录
max=p; //当前位置(放入到max),记录当前最大值(放入tmp)
tmp=p->data;
} //end of if
} //end of while
tmp=max->next->data; //一次遍历后max指针所指结点就是最大元素,删除之。。。
max->data=tmp;
max->next=max->next->next; //删除方法能看懂么?好好思考。。。
}//end of Del-max

❸ 算法编程题:数字组合求和问题 输入两个正整数n和m,从数列1,2,3.......n 中随意取几个数,使其和等

没看懂
去问问你的计算机老师吧

❹ 两道简单的C语言编程题 1.设给定三个整数a.b.c,试写出寻找其中数的一个算法,并分析在平均情况

先回答第一个问题:

#include<stdio.h>
#include<conio.h>
intmain(){
inta,b,c,d;
printf("Inputa,b,c:");
scanf("%d,%d,%d",&a,&b,&c);
if(a>=b){
if(b>=c)d=b;//a>=b>=c,比较2次
elseif(a>=c)d=c;//a>=c>b,比较3次
elsed=a;//c>a>=b,比较3次
}else{
if(a>=c)d=a;//b>a>=c,比较2次
elseif(b>=c)d=c;//b>=c>a,比较3次
elsed=b;//c>b>a,比较3次
}//平均比较次数:(2+3+3+2+3+3)/6=8/3次,最坏比较次数:3次
printf("ZhongShu=%d Finished! ",d);
getch();
return0;
}

平均比较8/3次,最坏比较3次。第二个问题:

#include<stdio.h>
#include<conio.h>
intBinMax(inta[],intlow,inthigh){//二分查找最大值,low、high为查找范围下标
if(low>high){
printf(" BinMaxError! ");
return-32768;//范围出错,提示,并返回整型最小值
}
if(low==high)returna[low];
if(low==high-1)return(a[low]>a[high]?a[low]:a[high]);
intmid=(low+high)/2,m1,m2;
m1=BinMax(a,low,mid);//找前半部的最大值
m2=BinMax(a,mid+1,high);//找后半部的最大值
return(m1>m2?m1:m2);
}
intmain(){
inta[9]={3,6,2,5,9,1,8,7,10},max;//元素个数不一定要满足n=2^k
max=BinMax(a,0,8);
printf("max=%d Finished! ",max);
getch();
return0;
}

都能看懂吧?希望能帮到你!

❺ 编程题 设计算法编写程序,输入整数,判定该数能否同时被6、9和14整除

#include<iostream>
using namespace std;
int main(){
int n;
cout<<"请输入一个整数"<<endl;
cin>>n;
if(n%6==0&&n%9==0&&n%14==0){
cout<<"这个数能同时被6、9和14整除"<<endl;
}else{
cout<<"这个数不符合"<<endl;
}
return 0;
}

❻ 数据结构与算法设计编程题(用C++描述),急,求大神解答~~~

以待排序序列 { 2, 5, 3, 4, 1} 为例,按非递减有序排列。

第一趟起泡排序过程如下:

初始:25341
第1次:25341
第2次:235413比最终位置前移了一个位置
第3次:234514比最终位置前移了一个位置
第4次:23415

通过第一趟的排序过程发现,3、4原来在索引为2、3的位置,但经过第一趟排序过程后,3、4暂时移动到了索引为1、2的位置。


C++程序如下:

#include"iostream"
#include"iomanip"

usingnamespacestd;

//输出数组中的所有元素
voiddisplay(intarr[],intn)
{
inti;

for(i=0;i<n;i++)
{
cout<<setw(4)<<arr[i];
}
cout<<endl;
}

//起泡排序
voidbubbleSort(intarr[],intn)
{
inti,j;
inttemp;

for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}

cout<<"第"<<i+1<<"趟:"<<endl;
display(arr,n);
}
}

intmain()
{
intarr[]={2,5,3,4,1};
intn=5;

cout<<"初始状态:"<<endl;
display(arr,n);

bubbleSort(arr,n);

return0;
}


运行测试:

初始状态:
25341
第1趟:
23415
第2趟:
23145
第3趟:
21345
第4趟:
12345

❼ 一道编程题 求算法思路.

因为n比较小,此题最优的解法是双向搜索
做法如下(n=20):
枚举前十个数的放入集合的放法,共3^10种,以两个集合的元素差为key,两个集合的元素和为value,存入哈希表
枚举后十个数的放入集合的放法,以两个集合的元素差为key,查哈希表,这样能查到对应的前十个数的分配方法,就知道总和了
这是最优解法,复杂度为3^(n/2)
这题还有一种经典的动态规划的解法,叫“双塔问题”,复杂度为w*n,w为所有数的总和

热点内容
优酷怎么给视频加密 发布:2025-05-14 19:31:34 浏览:633
梦三国2副本脚本 发布:2025-05-14 19:29:58 浏览:859
phpxmlhttp 发布:2025-05-14 19:29:58 浏览:432
Pua脚本 发布:2025-05-14 19:24:56 浏览:448
苹果像素低为什么比安卓好 发布:2025-05-14 19:13:23 浏览:460
安卓机微信怎么设置红包提醒 发布:2025-05-14 19:00:15 浏览:271
androidsystem权限设置 发布:2025-05-14 18:56:02 浏览:970
mq脚本 发布:2025-05-14 18:45:37 浏览:25
仙境传说ro解压失败 发布:2025-05-14 18:45:01 浏览:868
betweenand的用法sql 发布:2025-05-14 18:39:25 浏览:250