結果

問題 No.355 数当てゲーム(2)
ユーザー jj
提出日時 2017-01-08 07:30:26
言語 Fortran
(gFortran 14.2.0)
結果
AC  
実行時間 31 ms / 2,000 ms
コード長 1,815 bytes
コンパイル時間 805 ms
コンパイル使用メモリ 35,776 KB
実行使用メモリ 25,488 KB
平均クエリ数 24.96
最終ジャッジ日時 2024-07-17 00:44:33
合計ジャッジ時間 5,154 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 52
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

program main
implicit none
integer::n(1:4),m(1:4)
integer::hit,blow,hb,i,j
data n/0,1,2,3/
call get(n,hit,blow)
if(hit.eq.4) return
! selection
if(hit+blow.ne.4) then
hb = hit+blow
do i=1,4
m = n
do j=0,9
if(ANY(n.eq.j)) cycle
m(i) = j
call get(m,hit,blow)
if(hit.eq.4) then
return
else if(hit+blow.eq.4) then
n = m
goto 10
else if(hit+blow.gt.hb) then
hb = hit + blow
n = m
exit
end if
end do
end do
end if
10 continue
! shuffle
m = n
n = qsort(m)
do
call get(n,hit,blow)
if(hit.eq.4) then
return
end if
call next_permutation(n)
end do
contains
subroutine get(n,hit,blow)
integer::n(1:4)
integer::hit,blow
print '(i0," ",i0," ",i0," ",i0)',n
read *,hit,blow
end subroutine get
subroutine next_permutation(array)
implicit none
integer::array(:),d,i,j,k,swap
d = 4
do i=d,2,-1
if(array(i-1).lt.array(i)) exit
end do
do j=d,i+1,-1
if(array(i-1).lt.array(j)) exit
end do
swap = array(i-1)
array(i-1) = array(j)
array(j) = swap
do k=0, (d-1-i)/2
swap = array(i+k)
array(i+k) = array(d-k)
array(d-k) = swap
end do
end subroutine next_permutation
recursive function qsort(x) result(y)
integer,intent(in) ::x(:)
integer,allocatable::y(:)
integer::pivot,total
total = size(x)
if (total <=1) then
y = x
else
pivot = x(total/2)
y = [qsort(pack(x, x .lt. pivot)), &
pack(x, x .eq. pivot), &
qsort(pack(x, x .gt. pivot))]
endif
end function qsort
end program main
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0