當前位置:首頁 » 編程語言 » 每日一個小演算法c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

每日一個小演算法c語言

發布時間: 2023-01-03 18:14:22

㈠ 幫忙寫一個演算法,用c語言

數值下標是從0開始的,array[0...5,0...7]
(1)數組A的體積=6(行)×8(列)×6(位元組)=288(位元組)
(2)數組A的最後一個元素a57的第一個位元組的地址:
LOC(5,7)=LOC(0,0)+ ( 5×8+7 )×6 = 1000 (基地址)+ 282 = 1282
(3)按行存儲時,元素a14的第一個位元組的地址:
LOC( 1,4 ) = LOC( 0,0 ) + ( 1×8+4 )×6 = 1000 + 72 = 1072
(4)按列存儲時,元素嗄7的第一個位元組的地址:
LOC( 4,7 ) = LOC( 0,0 ) + ( 7×6+4 )×6 = 1000 + 276 = 1276

㈡ 用c語言寫一個演算法(折半或二分法),實現可以選擇1到20的從小到大以

解:用有序列插入法排序,過程如下:

第一步:7 1 (前兩個數7,1排成有序列)

第二步:7 3 1 (第3個數3按要求插入到已排好的有序列中)

第三步:12 7 3 1 (第4個數12按要求插入到已排好的有序列中)

第四步:12 8 7 3 1 (第5個數8按要求插入到已排好的有序列中)

第五步:12 8 7 4 3 1 (第6個數4按要求插入到已排好的有序列中)

第六步:12 9 8 7 4 3 1 (第7個數9按要求插入到已排好的有序列中)

第八步:12 10 9 8 7 4 3 1 (第8個數10按要求插入到已排好的有序列中)

這時各數的順序就是符合要求的最終順序.

用折半插入排序法,將新數據6插入到上面的有序列中,演算法步驟設計如下:

第一步:把新數據6與逗中間位置地的數據8比較,由於6<8,所以應將6放到8的右邊的一半有序列中,即應放到有序列7,4,3,1中.

第二步:把6與有序列7,4,3,1逗中間位置地的數據4比較,由於4<6,所以應將6放到4的左邊的一半有序列中,即應放到有序列7,4中.

第三步:把6與有序列7,4逗中間位置地的數據7比較,由於7>6,所以應將6放到7的右邊的一半有序列中,至此排序完成,得到一新的有序列

12,10,9,8,7,6,4,3,1

㈢ 一個簡單的小程序 C語言 BF演算法

引用沒問題,就是BF函數錯了。

#include<stdio.h>
#include<string.h>
#include<iostream>//.h去掉
usingnamespacestd;//命名空間

intBF(charS[],charT[])
{
inti,j,start;
i=0;
j=0;
start=0;
while(S[i]!=''&&T[j]!='')//T[i]改為T[j]
{
if(S[i]==T[j])
{
i++;j++;
}
else{
start++;
i=start;
j=0;
}
}
if(T[j]=='')
returnstart+1;//start+1,因為數組從0開始計數
else
return0;
}

intmain()
{
charS[1000],T[1000];
intstart;
printf("輸入主串: ");
scanf("%s",S);
printf("%s ",S);
printf("輸入子串: ");
scanf("%s",T);
printf("%s ",T);
start=BF(S,T);
cout<<"主串與子串在主串的第"<<start<<"個字元匹配"<<endl;

}

㈣ 在線求一個c語言演算法

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define null 0

typedef struct element {//棧的節點

char data;//數據區域

element* next;//後繼結點指針

element* prev;//前驅結點指針

};

typedef struct Stack{//棧

element* head;//頭結點

element* tail;//尾節點

int length;//棧的長度

};

element* getElement() {//獲取一個棧的節點

element* e = (element*)malloc(sizeof(element));//這里最好用element* e = new element;如果你的編譯器支持C++的話建議換成注釋里的寫法

e->next = null;

e->prev = null;

e->data = null;

return e;

}

Stack* getStack() {//獲取一個棧的結構體

Stack* stack = (Stack*)malloc(sizeof(Stack));//這里最好用Stack* stack = new Stack

element* e = getElement();

stack->head = e;

stack->tail = e;

stack->length = 0;

return stack;

}

void push(Stack* stack, char data) {//插入數據

element* e = getElement();

stack->tail->next = e;

e->next = null;

e->data = data;

e->prev = stack->tail;

stack->tail = e;

stack->length++;

}

char pop(Stack* stack) {//取出數據

if (stack->length <= 0) {

printf("沒有數據可取,棧空了");

return null;

}

element* e = stack->tail;

char result = e->data;

stack->tail = stack->tail->prev;

stack->tail->next = null;

free(e);

stack->length--;

return result;

}

int main() {

char buffer[256];

Stack* stack = getStack();

printf("請輸入字元序列:");

scanf("%s",buffer);

for (int i = 0; i < strlen(buffer); i++) {

push(stack, buffer[i]);//將字元一次推進棧中

}

for (int i = 0; i < strlen(buffer); i++) {

printf("%c",pop(stack));//將字元依次從棧中取出

}

return 0;

}

運行結果截圖

㈤ c語言一個小演算法,求大神指點

你這明顯沒完啊,還有1.5+1.5+1+1+1=6,還可以吧上面的一個或者三個1換成0.5+0.5;還可以把1.5換成1+0.5;2.5換成1.5+1,或者1+1+0.5,或者0.5+0.5+0.5+0.5+0.5……
總之這個問題一點意思都沒有,這題要想列舉出所有的類型,暴力破解的話需要7的12次方次嘗試,真實太蛋疼了
看在分的份上 給你寫一下吧,這個問題真是太沒意思了

㈥ 求一個C語言的演算法,最近腦袋不夠用了。

比如,仿第3/4周期的正弦曲線來取current_value值:Y=Asin(ωX+φ),其中Y為current_value的取值,X是第X次取值;A、ω、φ都均可通過自己喜好的曲線峰值、斜率、相位等信息確定。該曲線的起點是0xFFFF FFFF,終點是target_value 。

當然,你也可以不用正弦曲線,也可以換成其他的,如:反拋物線的前半段之類的。

㈦ C語言寫個演算法

#include <stdio.h>
#include<stdlib.h>
#include<time.h>

int InArray(int a[],int N,int data)/*判斷data是否在數組a[N]中.是則返回1,否則返回0*/
{
int i;
for(i=0;i<N;i++)
if(data==a[i])
return 1;
return 0;
}

int main(void)
{
int i,j=1,temp,a[8]={0};
srand( (unsigned)time( NULL ) ); /*保證每次生成的隨機數不相同*/

a[0]=rand()%8+1; /*數組第一項*/
for(i=1;i<8;i++)
{
temp=rand()%8+1;
if(InArray(a,8,temp))//當產生的隨機數已存在
{i--;continue;}
else
a[j++]=temp;
}

for(i=0;i<8;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}