数组的最长平台c语言,2010台湾省C语言版高级
1、我們用l代表最長平臺的長度,用k指示最長平臺在數(shù)組b中的起始位置(下標)。用j記住局部平臺的起始位置,用i指示掃描b數(shù)組的下標,i從0開始,依次和后續(xù)元素比較,若局部平臺長度(i-j)大于l時,則修改最長平臺的長度k(l=i-j)和其在b中的起始位置(k=j),直到b數(shù)組結(jié)束,l即為所求。
void Platform (int b[ ], int N)
//求具有N個元素的整型數(shù)組b中最長平臺的長度。
{l=1;k=0;j=0;i=0;
while(i
{while(i
if(i-j+1>l) {l=i-j+1;k=j;} //局部最長平臺
i++; j=i; } //新平臺起點
printf(“最長平臺長度%d,在b數(shù)組中起始下標為%d”,l,k);
}// Platform
2、約瑟夫環(huán)問題(Josephus問題)是指編號為1、2、 ,n的n(n>0)個人按順時針方向圍坐成一圈,現(xiàn)從第s個人開始按順時針方向報數(shù),數(shù)到第m個人出列,然后從出列的下一個人重新開始報數(shù),數(shù)到第m的人又出列, ,如此重復(fù)直到所有的人全部出列為止。現(xiàn)要求采用循環(huán)鏈表結(jié)構(gòu)設(shè)計一個算法,模擬此過程。
#include
typedef int datatype;
typedef struct node
{datatype data;
struct node *next;
}listnode;
typedef listnode *linklist;
void jose(linklist head,int s,int m)
{linklist k1,pre,p;
int count=1;
pre=NULL;
k1=head; /*k1為報數(shù)的起點*/
while (count!=s) /*找初始報數(shù)起點*/
{pre=k1;
k1=k1->next;
count++;
}
while(k1->next!=k1) /*當(dāng)循環(huán)鏈表中的結(jié)點個數(shù)大于1時*/
{ p=k1; /*從k1開始報數(shù)*/
count=1;
while (count!=m) /*連續(xù)數(shù)m個結(jié)點*/
{ pre=p;
p=p->next;
count++;
}
pre->next=p->next; /*輸出該結(jié)點,并刪除該結(jié)點*/
總結(jié)
以上是生活随笔為你收集整理的数组的最长平台c语言,2010台湾省C语言版高级的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lofter如何收藏合集
- 下一篇: AlmaLinux 9.3 发布:独立于