當前位置:編程學習大全網 - 編程軟體 - 如何用Linux Shell腳本實現約瑟夫環?急急急!!!

如何用Linux Shell腳本實現約瑟夫環?急急急!!!

將下面的文件存入腳本文件,比如 t.sh,然後用

./t.sh N S M

的方式運行,其中 N 是總人數,S是起始下標位置(0..N-1), M是報數的數字,比如

./t.sh 9 0 5

的含義就是總***9個人圍成壹圈,從下標為0的那個人開始報數,報數間隔為5,會得到以下輸出

5 is removed

1 is removed

7 is removed

4 is removed

3 is removed

6 is removed

9 is removed

2 is removed

8 is the last one

對這個腳本還有什麽問題,baidu hi我

#!/bin/bash

#total numbers

N=$1

# start position (0..N-1)

let S=$2%N

# step

M=$3

# initialize array

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

do

let array[$i]=i+1

done

let remains=N

while [ $remains -gt 0 ]

do

step=$M

let i=S%N

while [ $step -gt 1 ]

do

let i=(i+1)%N

if [ ${array[$i]} -gt 0 ]

then

let step--

fi

done

let remains--

if [ $remains -gt 0 ]

then

echo "${array[$i]} is removed"

else

echo "${array[$i]} is the last one"

fi

array[$i]=0

for (( i=i+1; remains>0 ; i++ ))

do

let i%=N

[ ${array[$i]} -gt 0 ] && break

done

let S=i

done

  • 上一篇:計算機編程語言哪個最有用
  • 下一篇:考研公務員是否免筆試?
  • copyright 2024編程學習大全網