李洋瘋狂C語言之n個人報數,報到3的退出,最后留在場上的是原來的第幾位(約瑟夫環)

今天老師布置了個題目,約瑟夫環,俗稱猴子選大王。n個人報數,報到3的退出,最后留在場上的時原來的第幾位

#include <stdio.h>int main()
{int i, n, q, p = 0;     //計數 i ,人數 n ,報數 p ,場上人數 qprintf ("input number");scanf ("%d", &n);q = n;int a[n];for (i = 0; i < n; i++) //將1到n輸入進數組a{   a[i] = i+1;}for (i = 0; ; i++){if (i == n)     /*當i++一直到n時,肯定有一些沒被選到,比如我們輸入8,第一輪是3,6被賦值0,當i=8時,繼續下一輪*/{i = 0;}if (0 != a[i])      /*我們下面定義的時當循環到三時,就賦值0,所以這邊等于0的不考慮在內*/{p++;}else continue;if (0 == p%3)   //這個就是從0一直加,到三的倍數就賦值為0,從而達到我們的目的{a[i] = 0;q--;            //上面q=n;標明q==n,只有一個為0就減一,為下面做鋪墊}if (1 == q)     //當剩下最后一個就輸出{break;}}for (i = 0; i < n; i++) //輸出最后一個人的編號{if (0 != a[i])printf ("spare:%d\n", a[i]);}return 0;
}

后來在網上又看到2種不同的方法,一種是用的指針

#include <stdio.h>
int main()
{  int i, j, k, m, n;  int *p;  printf ("input number");scanf ("%d", &n); int num[50];p = num;  for(i = 0; i < n; i++)  {  *(p+i) = i + 1;   //以1至n為序,給每個人編號  }  i = 0;    //i為每次循環時計數變量  k = 0;    //k為按1 2 3報數時的計數變量  m = 0;    //m為退出人數  while(m < n-1)  //當退出人數比n-1少時(即未退出人數大于1時)執行循環體  {  if(0 != *(p+i))  {  k++;  }  if(3 == k)    //將退出人的編號置為0  {  *(p+i) = 0;  k = 0;  m++;  }  i++;  if(i == n)  {  i = 0;//報數到尾后i恢復為0  }  }  while(0 == *p)  {  p++;  }  printf ("最后一個是:%d\n", *p);return 0;  
}

還有個牛人的,代碼很簡練(裝13)

#include <stdio.h>int main() 
{ int n, i, s = 0;int M = 3; printf ("input number");scanf ("%d", &n); for (i = 2; i <= n; ++i) s = (s+M) % i; printf("%d\n", s+1); return 0; 
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448598.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448598.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448598.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

搭建Vue腳手架(vue-cli)并創建一個項目

1、 安裝nodejs環境 官網下載&#xff1a;https://nodejs.org/en/download/ 一直默認就行&#xff0c;路徑可以改變但要記得到 安裝完成后cmd&#xff0c;輸入node -v ,npm -v 如果能看到node和npm的版本號了&#xff0c;說明已經安裝成功 2、安裝vue-cli 有npm和cnpm兩種方式…

NPM 使用介紹

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 NPM是隨同NodeJS一起安裝的包管理工具&#xff0c;能解決NodeJS代碼部署上的很多問題&#xff0c;常見的使用場景有以下幾種&#xff1a…

人生致命的八個經典問題

問題一&#xff1a;如果你家附近有一家餐廳&#xff0c;東西又貴又難吃&#xff0c;桌上還爬著蟑螂&#xff0c;你會因為它很近很方便&#xff0c;就一而再、再而三地光臨嗎&#xff1f; 回答&#xff1a;你一定會說&#xff0c;這是什么爛問題&#xff0c;誰那么笨&#xff0c…

RabbitMQ學習總結(5)——發布和訂閱實例詳解

2019獨角獸企業重金招聘Python工程師標準>>> 一、Publish/Subscribe&#xff08;發布/訂閱&#xff09;&#xff08;using the Java Client&#xff09; 在前面的教程中,我們創建了一個work Queue&#xff08;工作隊列&#xff09;。工作隊列背后的假設是每個任務是…

iOS有哪些數據類型/基本數據類型?

簡述 本文主要探究使用OC作為iOS開發語言時&#xff0c;我們能使用哪些數據類型。 一切類型始于C。 C語言的類型 基本數據類型&#xff1a; 基本數據類型&#xff08;fundamental data types&#xff09;也叫原始數據類型&#xff08;primitive data types&#xff09; 整型、字…

李洋瘋狂C語言之將”you are come from shanghai ”倒置為”shanghai from come are you”,將句子中的單詞位置倒置,而不改變單詞內部結構

題目: 編寫一個C函數,將”you are come from shanghai ”倒置為”shanghai from come are you”,及將句子中的單詞位置倒置,而不改變單詞內部結構 #include <stdio.h> #include <string.h> void change(char *p1, char *p2); //函數聲明 int main() {char str[] …

馬桶怎么清洗才干凈無異味?

方法/步驟 在馬桶水箱中一定要放上潔廁寶&#xff1a; 潔廁寶里面含有多種去除馬桶中雜質以及異味的功能&#xff0c;另外它還帶有香香的味道&#xff0c;我們一按沖馬桶的按鈕&#xff0c;放出來的總是藍色的水&#xff0c;十分的美觀和好看&#xff0c;但是這并不是花瓶般的作…

白話解說:阻塞和非阻塞,同步和異步

阻塞和非阻塞&#xff0c;同步和異步是node.js里經常遇到的詞匯&#xff0c;舉例說明&#xff1a; 我要看足球比賽&#xff0c;但是媽媽叫我燒水&#xff0c;電視機在客廳&#xff0c;燒水要在廚房。家里有2個水壺&#xff0c;一個是普通的水壺&#xff0c;另一個是水開了會叫的…

蘇嵌點滴(一)

來蘇嵌也有12天了&#xff0c;也漸漸開始習慣這樣的生活&#xff0c;每天睜眼到閉眼&#xff0c;全都是代碼。每天都得學習很多新的知識&#xff0c;C語言學到現在也學得差不多了&#xff0c;還有明天一天課。 指針、數組這些C語言中的重點&#xff0c;還是需要一點時間消化的…

Mysql學習總結(8)——MySql基本查詢、連接查詢、子查詢、正則表達查詢講解...

2019獨角獸企業重金招聘Python工程師標準>>> 查詢數據指從數據庫中獲取所需要的數據。查詢數據是數據庫操作中最常用&#xff0c;也是最重要的操作。用戶可以根據自己對數據的需求&#xff0c;使用不同的查詢方式。通過不同的查詢方式&#xff0c;可以獲得不同的數據…

安裝OpenCL和AMD驅動程序

我們將安裝AMD OpenCL軟件開發工具包&#xff08;SDK&#xff09;和AMD驅動程序。 userubuntu:~$ mkdir AMD-APP-SDK-v2.5-lnx64 userubuntu:~$ cd AMD-APP-SDK-v2.5-lnx64/ userubuntu:~$ wgethttp://developer.amd.com/Downloads/AMD-APP-SDK-v2.5-lnx64.tgz userubuntu:~$ t…

Node.js -- Stream 使用小例 ( 流運用 :讀取、寫入、寫出、拷貝)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Stream 是一個抽象接口&#xff0c;Node 中有很多對象實現了這個接口。例如&#xff0c;對http 服務器發起請求的request 對象就是一個 …

李洋瘋狂C語言之有關“you are come from shanghai”逆序(二)

今天將指針和函數全部學完了&#xff0c;之前這題的做法&#xff0c;現在看來有點繁瑣&#xff0c;于是乎做了一些修改&#xff0c;下面是新的代碼 //you are from shanghai逆序#include <stdio.h> #include <string.h> //下面要用到strlenvoid reverse(c…

sync - 清空文件系統緩沖區

總覽 (SYNOPSIS) sync [OPTION] 描述 (DESCRIPTION) 強迫把更改的塊寫入磁盤&#xff0c; 并更新超級塊。 --help顯示幫助然后終止。--version顯示版本信息然后終止。 轉載于:https://www.cnblogs.com/fanweisheng/p/11101219.html

學會用好 Visual Studio Code

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Visual Studio Code是個牛逼的編輯器&#xff0c;啟動非常快&#xff0c;完全可以用來代替其他文本文件編輯工具。又可以用來做開發&…

蘇嵌點滴(二)

今天把指針和函數講完了&#xff0c;這些都還能接受&#xff0c;之后老師和我們講了遞歸&#xff0c;有點難度。 晚上電腦還出了點狀況&#xff0c;一個晚自習全用來重裝系統和學習軟件套裝X_X&#xff0c;調試完已經接近下課&#xff0c;遞歸還沒來得及看。 放學后&#xff…

Maven學習總結(五)——聚合與繼承

2019獨角獸企業重金招聘Python工程師標準>>> Maven學習總結(五)——聚合與繼承 一、聚合 如果我們想一次構建多個項目模塊&#xff0c;那我們就需要對多個項目模塊進行聚合 1.1、聚合配置代碼 1 <modules> 2 <module>模塊一</module> 3 …

19-6/28作業:100以內偶數求和

?作業要求 ?分析思路 在循環里面增加約束&#xff0c;使累加1變成累加2 ?do-while循環代碼 public class GaoSiFor { public static void main(String[] args) { //定義兩個變量 int sum 0; int i 0; //開始循環 do{ //…

Visual Studio Code 常用快捷鍵

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、常用快捷鍵 編輯器與窗口管理 打開一個新窗口&#xff1a; CtrlShiftN 關閉窗口&#xff1a; CtrlShiftW 新建文件 CtrlN 文件之間切…

李洋瘋狂C語言之用遞歸解決李白喝酒問題(附填空題解法)

這是14年藍橋杯的一道填空題 題目&#xff1a;“李白街上走&#xff0c;提壺去買酒&#xff0c;遇店加一倍&#xff0c;見花喝一斗”&#xff0c; 途中&#xff0c;遇見5次店&#xff0c;見了10此花&#xff0c;壺中原有2斗酒&#xff0c;最后剛好喝 完酒&#xff0c;要求最…