當前位置:首頁 » 編程軟體 » 演算法編程題

演算法編程題

發布時間: 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為所有數的總和

熱點內容
linux自學視頻 發布:2025-05-14 16:14:49 瀏覽:255
我的世界伺服器崩了重啟 發布:2025-05-14 16:09:37 瀏覽:44
android深拷貝 發布:2025-05-14 16:09:35 瀏覽:153
cf電腦版轉伺服器神器還在嗎 發布:2025-05-14 16:09:02 瀏覽:211
百度文庫伺服器如何搭建 發布:2025-05-14 16:09:00 瀏覽:248
安卓微信刪除的好友怎麼找回 發布:2025-05-14 16:08:56 瀏覽:706
iphone的訪問限制密碼忘記了怎麼辦 發布:2025-05-14 16:08:56 瀏覽:184
php對象轉換成數組 發布:2025-05-14 16:07:55 瀏覽:27
java服務端緩存 發布:2025-05-14 15:53:37 瀏覽:105
php判斷postget 發布:2025-05-14 15:34:24 瀏覽:357