掃描演算法c語言,c語言掃描文件

本文目錄一覽:

幫我解決一道C語言演算法的問題

這是一個最大子序列和問題。通常用動態規劃法解。至於動態規劃的數學模型,懶得去查了,直接給你找了一個演算法,你湊合看吧。

從整數序列頭部開始掃描,假設現掃描到的位置為i,求取從0到i所有元素的和sum[i],sum[i]取最大值的地方即為最大子序列的結束位置,設為a。從結束位置a向前掃描,找到第一個小於零的位置b,b+1就是最大子序列的開始位置。求從b+1到a位置的值即可得到最大子序列和。按此思路該演算法時間複雜度為O(m+n),其中m, n分別為最大子序列的長度、給定整數序列的長度。

改進:根據對上述演算法的進一步分析,可以知道,最大子序列和中必然不存在前綴子序列小於0的情況,於是設一ThisSum用於指示當前子序列和。改進演算法描述如下:從整數序列頭部開始掃描,累加序列元素和ThisSum,若ThisSum0,則停止累加子序列和,將ThisSum清零,並從下一位置重新開始累加ThisSum,否則將ThisSum與當前MaxSum比較,並更新MaxSum。此改進演算法時間複雜度僅為O(n),n為給定整數序列的長度。

int MaxSubsequenceSum3(const int A[], int N)

{

int ThisSum, MaxSum, i;

ThisSum = MaxSum = 0;

for(i = 0; i N; i++)

{

ThisSum += A[i];

if(ThisSum MaxSum)

MaxSum = ThisSum;

else if(ThisSum 0)

ThisSum = 0;

}

return MaxSum;

}

dda直線段掃描轉換演算法用c語言怎麼表示

#includegraphics.h

void main()

{

int driver,mode;

int xa,ya,xb,yb,c;

int dx,dy,steps,k;

float fx,fy,x,y;

int wx,wy;

driver=DETECT;

mode=0;

initgraph(driver,mode,””);

printf(“please enter the start point:/n”);

printf(” xa= “);

scanf(“%d”,xa);

printf(” ya= “);

scanf(“%d”,ya);

printf(“please enter the end point:/n”);

printf(” xb= “);

scanf(“%d”,xb);

printf(” yb= “);

scanf(“%d”,yb);

如何校驗和是通過一定的演算法掃描一個數據計算出的一個數值。用C語言

#includestdio.h

int Quicksum(char *str)           //用指針做校驗函數的參數,來接收被校驗的字元串A;

{

int sum=0,loc=1,i,n;                 //sum代表校驗和,loc代表每個字元在字元串A里的位置;

char *p;

p=str;                                          //將被校驗字元串A的地址賦值給字元指針p,用p表示位置;

n=strlen(p);                                    // 用strlen函數求出A的有效長度;

for(i=0;in;i++)                           //注意循環的次數。體會in的意思,保證能計算到每個字元

{

if((*p)==’ ‘) {p++; loc++;continue;}     //如果遇到空格,就將位置指針向後移動一個,跳過空格

//注意loc也要增加一,為了正確記錄每個字元的位置

sum+=((*p-‘A’)+1)*loc;        //如果此處不是空格,就根據校驗計算該位置所代表的和,進行累加

loc++;                                  //將位置指針移動到下一個字元,同時loc也跟著變化

p++;

}

return sum;                     //返回校驗和

}

void main()

{

int jiaoyanhe;

char *string;

printf(“Please input (A-Z) : “);

gets(string);                      //使用gets函數輸入字元串;

jiaoyanhe=Quicksum(string);     //調用Quicksum函數進行校驗和的計算。

printf(“jiao yan he :  “);

printf(“%d\n”,jiaoyanhe);

}

上機運行的時候,把注釋全刪了吧,要不然可能運行出錯,多體會一下吧,這只是其中的一種方法而已,多上機運行代碼,理解下裡面的邏輯,好運。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241691.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:42
下一篇 2024-12-12 12:43

相關推薦

發表回復

登錄後才能評論