python版約瑟夫環,python版約瑟夫環問題出圈列表

本文目錄一覽:

新手如何自學編程

要熟悉編程範式,尤其是面向過程及面向對象這兩種;要廣泛閱讀,多用編譯器及IDE(網上有許多免費的)練習編程。

選擇一種編程語言。初學者一定要從主流語言開始學習,比如中級語言C和C++。這兩種語言是任何一名合格、專業的程序員都必須掌握的,因為它們稱得上是軟件開發界的主流。

但是最好不要從高級語言開始學,如Java,因為這些語言對於初學者來說難度未免太高(高級語言可以以後再學,但是C語言和C++應該作為你的基礎)。

然而對於完完全全的門外漢的來說,可能C和C++都有點困難,那麼你也可以從Python開始學,這種語言被大家廣泛認為是適合初學者的。

C語言為什麼程序單步調試正確,一整體運行就錯誤

malloc有問題。

line*head=(line*)malloc(sizeof(line));//

sizeof 是line不是line*。

下面的

line*body=(line*)malloc(sizeof(line));

同樣處理。

count函數沒細看。 不確定是否有問題。

輸入若干有序數放在數組中。然後輸入一個數,插入到此有序數列中,插入後,數組中的數仍然有序。

定義數組的時候,增加一個單元即可

#include stdio.h

#define M 6

int wnn1(int *,int,int);

void wnn2(int *,int);

void main()

{int x,n,t,s[M+1]={10,15,18,24,29,35};

printf(“input x:\n”);

scanf(“%d”,x);

n=M;

t=wnn1(s,x,n);

wnn2(s,t);

}

int wnn1(int *a,int x,int n)

{int i,j=0;

while(jna[j]x)j++;

for(i=n-1;i=j;i–)a[i+1]=a[i];

a[j]=x;

n++;

return n;

}

void wnn2(int *a,int n)

{int i;

for(i=0;in;i++)printf(“%4d”,a[i]);

printf(“\n”);

}

C++編程:約瑟夫環問題。

/*

【基本要求】

基本的約瑟夫的描述:

古代某法官要判決N個犯人的死刑,他有一條荒唐的法律,將犯人站成一個圓圈,

從第S個人開始數起,每數到第D個犯人,就拉出來處決,然後再數D個,數到的人再處決,

直到剩下的最後一個可赦免。

發展的約瑟夫的描述:

古代某法官要判決N個犯人的死刑,

但這N個人每人持有一個密碼,他有一條荒唐的法律,將犯人站成一個圓圈,

法官先給出一個密碼M,從第S個人開始數起,每數到第M個犯人,就拉出來處決,

再根據這個人所持有的密碼F,然後再數F個,數到的人再處決,

以此類推直到剩下的最後一個可赦免。

【測試數據】

數據請自己添加。

*/

#include iostream

using namespace std;

// 表示一個犯人的結構體

struct Prisoner

{

// 編號

int id;

// 密碼

int pass;

// 用於鏈表的指針

struct Prisoner * pre;

struct Prisoner * next;

};

class JosephCircle

{

public:

// 基本的約瑟夫構造函數

JosephCircle(int N,int S,int D);

// 發展的約瑟夫構造函數

JosephCircle(int N,int S,int M,int password[]);

// 輸出約瑟夫環

void print();

// 開始處決犯人

void start();

private:

// 約瑟夫環的頭指針

struct Prisoner * head;

// 第一個被處決的犯人的節點指針

struct Prisoner * firstPunishedPrision;

};

JosephCircle::JosephCircle(int N,int S,int D)

{

struct Prisoner * p , *pr;

// 約瑟夫環的頭指針初始化為空

this-head = NULL;

// 構造一個由 N 個犯人組成的約瑟夫環

for(int i=1;i=N;i++)

{

// 當前添加的犯人是第一個犯人,要特殊處理一下

if(this-head == NULL)

{

// 新增一個犯人

p = new struct Prisoner();

// 犯人編號

p – id = i;

// 犯人密碼

p – pass = D;

// 緊挨着的下一個犯人(因為是環狀的,每個人都會有緊挨着的其他犯人)

p – pre = p;

p – next = p;

// 約瑟夫環的頭指針

this-head = pr = p;

}

else

{

p = new struct Prisoner();

p – id = i;

p – pass = D;

p – pre = pr;

p – next = pr-next;

pr – next – pre = p;

pr – next = p;

pr = p;

}

}

// 尋找約瑟夫環裡面第一個被處決的犯人的【節點指針】

firstPunishedPrision = head;

for(int i=2;i=(S+D-1);i++)

{

this-firstPunishedPrision = this-firstPunishedPrision – next;

}

}

JosephCircle::JosephCircle(int N,int S,int M,int password[])

{

struct Prisoner * p , *pr;

// 約瑟夫環的頭指針初始化為空

this-head = NULL;

// 構造一個由 N 個犯人組成的約瑟夫環

for(int i=1;i=N;i++)

{

// 當前添加的犯人是第一個犯人,要特殊處理一下

if(this-head == NULL)

{

// 新增一個犯人

p = new struct Prisoner();

// 犯人編號

p – id = i;

// 犯人密碼

p – pass = password[i-1];

// 緊挨着的下一個犯人(因為是環狀的,每個人都會有緊挨着的其他犯人)

p – pre = p;

p – next = p;

// 約瑟夫環的頭指針

this-head = pr = p;

}

else

{

p = new struct Prisoner();

p – id = i;

p – pass = password[i-1];

p – pre = pr;

p – next = pr-next;

pr – next – pre = p;

pr – next = p;

pr = p;

}

}

// 尋找約瑟夫環裡面第一個被處決的犯人的【節點指針】

firstPunishedPrision = head;

for(int i=2;i=(S+M-1);i++)

{

this-firstPunishedPrision = this-firstPunishedPrision – next;

}

}

// 輸出約瑟夫環

void JosephCircle::print()

{

struct Prisoner * p = this-head;

if(p != NULL)

{

do

{

cout “[編號:” p-id “,密碼:” p-pass “]” ;

if(p-next != this-head)

{

cout” – “;

}

p = p-next;

}while(p != this-head);

}

cout endl endl;

}

// 開始處決犯人

void JosephCircle::start()

{

struct Prisoner * p = this-firstPunishedPrision,*pr,*q;

int counter = 1;

/*

因為約瑟夫環是一個循環鏈表(也就是一個圈),

當 p-next != p 的時候,說明圈裡面還有多餘一個的節點(犯人),

繼續數數並處決犯人

*/

while(p-next != p)

{

// q 向當前被處決的犯人

q = p;

// 從約瑟夫環裡面刪除被處決掉的犯人

q – pre – next = q – next;

q – next – pre = q – pre;

p = p – next;

// 輸出被處決的犯人的信息

cout “第 ” (counter++) ” 個被處決的犯人編號:” q-id endl;

// 尋找下一個將要處決的犯人

for(int i=1;i=(q-pass-1);i++)

{

p = p-next;

}

// 釋放內存(被處決掉的犯人)。

free(q);

}

// 輸出被赦免的犯人的信息

cout “被赦免的犯人的編號:” p-id endl endl;;

}

int main(int argc, char *argv[])

{

// 基本的約瑟夫環: JosephCircle(int N,int S,int D);

JosephCircle j1 = JosephCircle(3,1,2);

j1.print();

j1.start();

// 發展的約瑟夫環: JosephCircle(int N,int S,int M,int password[]);

int pass[]={1,5,3};

JosephCircle j2 = JosephCircle(3,1,2,pass);

j2.print();

j2.start();

return 0;

}

python類約瑟夫環原創問題求解 求大神

COUNT = 60  # 總人數

INDEX_FIRST = 2   # 第一次站出來的是2號

origin = list(range(1, COUNT+1))

res = []

index_label = INDEX_FIRST – 1

index_temp = 0

while origin:

    index_temp = (index_label + index_temp) % len(origin)

    res.append(origin.pop(index_temp))

    index_label += 1

print(res)

請點擊輸入圖片描述

python約瑟夫環怎麼判

import collections

def joseph(lst,k):

    t = collections.deque(lst)

    while len(t)  1:

        t.rotate(-k)

        t.popleft()

    return t

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

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

相關推薦

  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智能等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論