锘??xml version="1.0" encoding="utf-8" standalone="yes"?>色欲aⅴ亚洲情无码AV,亚洲av永久无码天堂网,无码久久精品国产亚洲Av影片 http://www.tkk7.com/javacap/鏉備竷鏉傚叓銆傘傘備竴瀹朵箣璦 zh-cn Fri, 09 May 2025 10:37:36 GMT Fri, 09 May 2025 10:37:36 GMT 60 姹傝繛緇鏁存暟浣垮緱鍏跺拰涓虹粰瀹氱殑涓涓鏁存暟鐨勬瀯閫犳цВ娉? http://www.tkk7.com/javacap/archive/2011/12/01/365333.htmlDoubleH DoubleH Thu, 01 Dec 2011 14:09:00 GMT http://www.tkk7.com/javacap/archive/2011/12/01/365333.html http://www.tkk7.com/javacap/comments/365333.html http://www.tkk7.com/javacap/archive/2011/12/01/365333.html#Feedback 2 http://www.tkk7.com/javacap/comments/commentRss/365333.html http://www.tkk7.com/javacap/services/trackbacks/365333.html 濡傞錛氭眰榪炵畫姝f暣鏁頒嬌寰楀叾鍜屼負緇欏畾鐨勪竴涓鏁存暟
涓嬮潰緇欏嚭鎴戠殑瑙f硶錛屽嚑涔庡彲浠ヤ竴姝ュ埌浣嶆眰鍑烘潵
瀹炵幇浠g爜濡備笅錛?br />/* * *Author: Koth ( http://weibo.com/yovn ) *Date: 2011-12-01 */ #include < stdlib.h > #include < stdio.h > #include < stdint.h > int solve( int Y, int & X){ int m = 0 ; int t = Y; if (Y <= 0 ){ X = Y; return 1 ; } while ((t & 1 ) == 0 ){ m += 1 ; t = t >> 1 ; } if (m == 32 ){ X = Y; return 1 ; } int lastK = 32 ; for (;lastK > m + 1 ;lastK -- ){ if (Y & ( 1 << (lastK - 1 ))){ break ; } } // its a number st. exp(2,K) if (lastK == (m + 1 )){ X = Y; return 1 ; } int k = 1 << (m + 1 ); int b = (Y >> m) - ( 1 << (lastK - m - 1 )); X = ( 1 << (lastK - m - 2 )) + (b + 1 - k) / 2 ; if (X <= 0 ){ k = k - 1 - (( 0 - X) << 1 ); X = 0 - X + 1 ; } return k; } int main( int argc, char * argv[]){ if (argc <= 1 ){ fprintf(stdout, " Usage:%s number\n " ,argv[ 0 ]); return 0 ; } int Y = atoi(argv[ 1 ]); int X = 0 ; int k = solve(Y,X); fprintf(stdout, " %d= " ,Y); for ( int i = 0 ;i < k;i ++ ){ fprintf(stdout, " %d " ,X + i); if (i < (k - 1 )){ fprintf(stdout, " + " ); } } fprintf(stdout, " \n " ); return 0 ; }
]]> DP鐨勫嚑閬撶粌鎵嬮 http://www.tkk7.com/javacap/archive/2011/02/06/343913.htmlDoubleH DoubleH Sun, 06 Feb 2011 13:13:00 GMT http://www.tkk7.com/javacap/archive/2011/02/06/343913.html http://www.tkk7.com/javacap/comments/343913.html http://www.tkk7.com/javacap/archive/2011/02/06/343913.html#Feedback 0 http://www.tkk7.com/javacap/comments/commentRss/343913.html http://www.tkk7.com/javacap/services/trackbacks/343913.html /**
*
*/
pack... 闃呰鍏ㄦ枃 ]]> 鍩轟簬JDK7 NIO2鐨勯珮鎬ц兘web鏈嶅姟鍣ㄥ疄璺典箣浜?/title> http://www.tkk7.com/javacap/archive/2009/12/04/304813.htmlDoubleH DoubleH Fri, 04 Dec 2009 09:57:00 GMT http://www.tkk7.com/javacap/archive/2009/12/04/304813.html http://www.tkk7.com/javacap/comments/304813.html http://www.tkk7.com/javacap/archive/2009/12/04/304813.html#Feedback 6 http://www.tkk7.com/javacap/comments/commentRss/304813.html http://www.tkk7.com/javacap/services/trackbacks/304813.html 闃呰鍏ㄦ枃 ]]> JDK7 NIO2 瀹炶返: 澧炲姞 TransmitFile鏀寔 http://www.tkk7.com/javacap/archive/2009/11/29/304105.htmlDoubleH DoubleH Sun, 29 Nov 2009 07:19:00 GMT http://www.tkk7.com/javacap/archive/2009/11/29/304105.html http://www.tkk7.com/javacap/comments/304105.html http://www.tkk7.com/javacap/archive/2009/11/29/304105.html#Feedback 2 http://www.tkk7.com/javacap/comments/commentRss/304105.html http://www.tkk7.com/javacap/services/trackbacks/304105.html JDK7鐨凬IO2鐗規ф垨璁告槸鎴戞渶鏈熷緟鐨勶紝鎴戜竴鐩存兂鍩轟簬瀹冨啓涓涓珮鎬ц兘鐨凧ava Http Server.鐜板湪榪欎釜鎯蟲硶緇堜簬鍙互瀹炴柦浜嗐?br />
鏈漢鍩轟簬鐩墠鏈鏂扮殑JDK7 b76寮鍙戜簡涓涓狧TTP Server鎬ц兘紜疄涓嶉敊銆?br />
鍦╳indows騫沖彴涓奛IO2閲囩敤AccpetEx鏉ュ紓姝ユ帴鍙楄繛鎺ワ紝騫朵笖璇誨啓鍏ㄩ兘鍏寵仈鍒癐OCP瀹屾垚绔彛銆備笉浠呭姝わ紝涓轟簡鏂逛究寮鍙戣呬嬌鐢紝榪濱OCP宸ヤ綔綰跨▼閮藉皝瑁呭ソ浜嗭紝浣犲彧瑕佹彁渚涚嚎紼嬫睜灝監K銆?br />
浣嗘槸瑕佹敞鎰忥紝IOCP宸ヤ綔綰跨▼鐨勭嚎紼嬫睜蹇呴』鏄?Fix鐨勶紝鍥犱負浣犲彂鍑虹殑璇誨啓璇鋒眰閮藉叧鑱斿埌鐩稿簲鐨勭嚎紼嬩笂錛屽鏋滅嚎紼嬫浜嗭紝閭h鍐欏畬鎴愭儏鍐墊槸涓嶇煡閬撶殑銆?br />
浣滀負涓涓狧ttp Server錛屼紶閫佹枃浠舵槸蹇呬笉鍙皯鐨勫姛鑳斤紝閭d竴鑸枃浠剁殑浼犻侀兘鏄鎶婄▼搴忛噷鐨刡uffer鎷瘋礉鍒板唴鏍哥殑buffer錛岀敱鍐呮牳鍙戦佸嚭鍘葷殑銆倃indows騫沖彴涓婁負榪欑鎯呭喌鎻愪緵浜嗗緢濂界殑瑙e喅鏂規錛屼嬌鐢═ransmitFile鎺ュ彛
BOOL TransmitFile(
SOCKET hSocket,
HANDLE hFile,
DWORD nNumberOfBytesToWrite,
DWORD nNumberOfBytesPerSend,
LPOVERLAPPED lpOverlapped,
LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,
DWORD dwFlags
);
浣犲彧瑕佹妸鏂囦歡鍙ユ焺鍙戦佺粰鍐呮牳灝辮浜嗭紝鍐呮牳甯綘鎼炲畾鍏朵綑鐨勶紝鐪熸鍋氬埌Zero-Copy.
浣嗘槸寰堜笉騫革紝NIO2閲孉synchronousSocketChannel娌℃湁鎻愪緵榪欐牱鐨勬敮鎸併傝屼負HTTP Server鐨勬ц兘鑰冮噺錛屾湰浜哄彧濂借嚜宸卞鍔犺繖涓敮鎸併?br />
瑕佹棤緙濇敮鎸侊紝榪欎釜蹇呴』寰楄〃鐜扮殑璺?Read /Write涓鏍鳳紝鏈夊畬鎴愮殑閫氱煡錛岄氱煡浼犻佸灝戞暟鎹紝絳夌瓑銆?br />
浠旂粏璇誨畬sun鐨処OCP瀹炵幇浠ュ悗鍙戠幇榪欓儴鍒嗗伐浣滀粬浠皝瑁呭緱寰堝ソ錛屽熀鏈彧瑕佸線浠栦滑鐨勬鏋墮噷鍔犱笢瑗垮氨濂戒簡銆?br />
涓轟簡鑳借闂粬浠殑妗嗘灦浠g爜錛屾垜瀹氫箟鑷繁鐨凾ransmitFile鏀寔綾誨湪sun.nio.ch鍖呴噷錛屼互鑾峰緱鏈澶х殑鏉冮檺銆?br />
package sun.nio.ch;
import java.io.IOException;
import java.lang.reflect.Field;
import java.nio.channels.AsynchronousCloseException;
import java.nio.channels.AsynchronousSocketChannel;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.CompletionHandler;
import java.nio.channels.NotYetConnectedException;
import java.nio.channels.WritePendingException;
import java.util.concurrent.Future;
/**
* @author Yvon
*
*/
public class WindowsTransmitFileSupport {
//Sun's NIO2 channel implementation class
private WindowsAsynchronousSocketChannelImpl channel;
//nio2 framework core data structure
PendingIoCache ioCache;
//some field retrieve from sun channel implementation class
private Object writeLock;
private Field writingF;
private Field writeShutdownF;
private Field writeKilledF; // f
WindowsTransmitFileSupport()
{
// dummy one for JNI code
}
/**
*
*/
public WindowsTransmitFileSupport(
AsynchronousSocketChannel
channel) {
this .channel = (WindowsAsynchronousSocketChannelImpl)channel;
try {
// Initialize the fields
Field f = WindowsAsynchronousSocketChannelImpl. class
.getDeclaredField(" ioCache " );
f.setAccessible( true );
ioCache = (PendingIoCache) f.get(channel);
f = AsynchronousSocketChannelImpl. class
.getDeclaredField(" writeLock " );
f.setAccessible( true );
writeLock = f.get(channel);
writingF = AsynchronousSocketChannelImpl. class
.getDeclaredField(" writing " );
writingF.setAccessible( true );
writeShutdownF = AsynchronousSocketChannelImpl. class
.getDeclaredField(" writeShutdown " );
writeShutdownF.setAccessible( true );
writeKilledF = AsynchronousSocketChannelImpl. class
.getDeclaredField(" writeKilled " );
writeKilledF.setAccessible( true );
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* Implements the task to initiate a write and the handler to consume the
* result when the send file completes.
*/
private class SendFileTask < V, A > implements Runnable, Iocp.ResultHandler {
private final PendingFuture < V, A > result;
private final long file;//file is windows file HANDLE
SendFileTask( long file, PendingFuture < V, A > result) {
this .result = result;
this .file = file;
}
@Override
// @SuppressWarnings("unchecked")
public void run() {
long overlapped = 0L ;
boolean pending = false ;
boolean shutdown = false ;
try {
channel.begin();
// get an OVERLAPPED structure (from the cache or allocate)
overlapped = ioCache.add(result);
int n = transmitFile0(channel.handle, file, overlapped);
if (n == IOStatus.UNAVAILABLE) {
// I/O is pending
pending = true ;
return ;
}
if (n == IOStatus.EOF) {
// special case for shutdown output
shutdown = true ;
throw new ClosedChannelException();
}
// write completed immediately
throw new InternalError( " Write completed immediately " );
} catch (Throwable x) {
// write failed. Enable writing before releasing waiters.
channel.enableWriting();
if ( ! shutdown && (x instanceof ClosedChannelException))
x = new AsynchronousCloseException();
if ( ! (x instanceof IOException))
x = new IOException(x);
result.setFailure(x);
} finally {
// release resources if I/O not pending
if ( ! pending) {
if (overlapped != 0L )
ioCache.remove(overlapped);
}
channel.end();
}
// invoke completion handler
Invoker.invoke(result);
}
/**
* Executed when the I/O has completed
*/
@Override
@SuppressWarnings(" unchecked " )
public void completed( int bytesTransferred, boolean canInvokeDirect) {
// release waiters if not already released by timeout
synchronized (result) {
if (result.isDone())
return ;
channel.enableWriting();
result.setResult((V) Integer.valueOf(bytesTransferred));
}
if (canInvokeDirect) {
Invoker.invokeUnchecked(result);
} else {
Invoker.invoke(result);
}
}
@Override
public void failed( int error, IOException x) {
// return direct buffer to cache if substituted
// release waiters if not already released by timeout
if ( ! channel.isOpen())
x = new AsynchronousCloseException();
synchronized (result) {
if (result.isDone())
return ;
channel.enableWriting();
result.setFailure(x);
}
Invoker.invoke(result);
}
}
public < V extends Number, A > Future < V > sendFile( long file, A att,
CompletionHandler < V, ? super A > handler) {
boolean closed = false ;
if (channel.isOpen()) {
if (channel.remoteAddress == null )
throw new NotYetConnectedException();
// check and update state
synchronized (writeLock) {
try {
if (writeKilledF.getBoolean(channel))
throw new IllegalStateException(
" Writing not allowed due to timeout or cancellation " );
if (writingF.getBoolean(channel))
throw new WritePendingException();
if (writeShutdownF.getBoolean(channel)) {
closed = true ;
} else {
writingF.setBoolean(channel, true );
}
} catch (Exception e)
{
IllegalStateException ise = new IllegalStateException( " catch exception when write " );
ise.initCause(e);
throw ise;
}
}
} else {
closed = true ;
}
// channel is closed or shutdown for write
if (closed) {
Throwable e = new ClosedChannelException();
if (handler == null )
return CompletedFuture.withFailure(e);
Invoker.invoke(channel, handler, att, null , e);
return null ;
}
return implSendFile(file,att,handler);
}
< V extends Number, A > Future < V > implSendFile( long file, A attachment,
CompletionHandler < V, ? super A > handler) {
// setup task
PendingFuture < V, A > result = new PendingFuture < V, A > (channel, handler,
attachment);
SendFileTask < V,A > sendTask = new SendFileTask < V,A > (file,result);
result.setContext(sendTask);
// initiate I/O (can only be done from thread in thread pool)
// initiate I/O
if (Iocp.supportsThreadAgnosticIo()) {
sendTask.run();
} else {
Invoker.invokeOnThreadInThreadPool(channel, sendTask);
}
return result;
}
private native int transmitFile0( long handle, long file,
long overlapped);
}
榪欎釜鎿嶄綔璺熼粯璁ゅ疄鐜扮殑閲岀殑write鎿嶄綔鏄緢鍍忕殑錛屽彧鏄渶鍚庤皟鐢ㄧ殑鏈湴鏂規硶涓嶄竴鏍楓傘?br />
鎺ヤ笅鏉ワ紝鎴戜滑鎬庝箞浣跨敤鍛紝榪欎釜綾繪槸瀹氫箟鍦╯un鐨勫寘閲岀殑錛岀洿鎺ョ敤鐨勮瘽錛屼細鎶llegalAccessError,鍥犱負鎴戜滑鐨勭被鍔犺澆鍣ㄨ窡鍒濆鍖栧姞杞藉櫒鏄笉涓鏍風殑銆?br />
瑙e喅鍔炴硶涓涓槸閫氳繃鍚姩鍙傛暟-Xbootclasspath錛岃鎴戜滑鐨勫寘琚垵濮嬪姞杞藉櫒鍔犺澆銆傛垜涓漢涓嶅枩嬈㈣繖縐嶅姙娉曪紝鎵浠ュ氨閲囩敤JNI鏉ュ畾涔夋垜浠殑windows TransmitFile鏀寔綾匯?br />
榪欐牱鎴戜滑鐨勫伐浣滅畻鏄畬鎴愪簡錛屾敞鎰忥紝鍙戦佹枃浠剁殑鏃跺欎紶寰楁槸鏂囦歡鍙ユ焺錛岃繖鏍峰仛鐨勫ソ澶勬槸浣犲彲浠ユ洿濂界殑鎺у埗錛屼竴鑸槸鍦ㄥ彂閫佸墠錛屾墦寮鏂囦歡鍙ユ焺錛屽畬鎴愬悗鍦ㄥ洖璋冮氱煡鏂規硶閲屽叧闂枃浠跺彞鏌勩?br />
鏈夊叴瓚g殑鍚屽鍙互鐪嬬湅鎴戠殑HTTP server欏圭洰:
http://code.google.com/p/jabhttpd/
鐩墠鍩烘湰鍔熻兘瀹炵幇寰楀樊涓嶅錛屽仛浜嗕簺綆鍗曠殑嫻嬭瘯錛屾ц兘姣旇緝婊℃剰銆傝繖涓湇鍔″櫒涓嶆墦綆楁敮鎸乻ervlet api錛屽熀鏈槸涓撻棬緇欏仛鍩轟簬闀胯繛鎺ユā寮忛氫俊鐨勫畾鍋氱殑銆?br />
]]>鍚戜笂鍙栨暣鐨勪竴涓簲鐢?/title> http://www.tkk7.com/javacap/archive/2009/05/04/268781.htmlDoubleH DoubleH Mon, 04 May 2009 03:45:00 GMT http://www.tkk7.com/javacap/archive/2009/05/04/268781.html http://www.tkk7.com/javacap/comments/268781.html http://www.tkk7.com/javacap/archive/2009/05/04/268781.html#Feedback 4 http://www.tkk7.com/javacap/comments/commentRss/268781.html http://www.tkk7.com/javacap/services/trackbacks/268781.html
鏈変釜閾捐〃錛圠ist)錛屾湁N涓厓绱狅紝褰揘寰堝ぇ鐨勬椂鍊欙紝鎴戜滑閫氬父鎯沖垎鎵瑰鐞嗚閾捐〃銆傚亣濡傛瘡嬈″鐞哅鏉?0<M<=N),閭d箞闇瑕佸鐞嗗嚑嬈℃墠鑳藉鐞嗗畬鎵鏈夋暟鎹憿錛?br />
闂寰堢畝鍗曪紝鎴戜滑闇瑕?lt;N/M>嬈★紝榪欓噷鎴戜滑鐢?lt;>琛ㄧず鍚戜笂鍙栨暣,[]琛ㄧず鍚戜笅鍙栨暣錛岄偅涔堟庝箞鏉ヨ〃紺鴻繖涓煎憿錛?br />
鎴戜滑鍙互璇佹槑錛?br />
<N/M>=[(N-1)/M]+1 (0<M<=N,M,N∈Z)
涓嶅け涓鑸э紝鎴戜滑璁綨=Mk+r(0<=r<M),
1錛夊綋r>0鏃訛紝
宸﹁竟錛?lt;N/M>=<(Mk+r)/M>=<k+r/M>=k+<r/M>=k+1
鍙寵竟錛歔(N-1)/M]+1=[(Mk+r-1)/M]+1=[k+(r-1)/M]+1=k+1+[(r-1)/M]=k+1
2錛夊綋r=0
宸﹁竟錛?lt;N/M>=k
鍙寵竟錛歔(N-1)/M]+1=[(Mk-1)/M]+1=[(M(k-1)+M-1)/M]+1=[k-1+(M-1)/M]+1=k+[(M-1)/M]=k
鍛介寰楄瘉銆?br />
鏈変簡榪欎釜鍏紡錛屾垜浠湪Java浠g爜閲屽彲浠ヨ繖鏍瘋綆?
int nn = (N - 1 ) / M + 1
.
鍥犱負'/'鏄線涓嬪彇鏁寸殑銆?br />
]]> POJ 3164 鏈灝忔爲褰㈠浘綆楁硶 http://www.tkk7.com/javacap/archive/2009/04/24/267393.htmlDoubleH DoubleH Fri, 24 Apr 2009 08:39:00 GMT http://www.tkk7.com/javacap/archive/2009/04/24/267393.html http://www.tkk7.com/javacap/comments/267393.html http://www.tkk7.com/javacap/archive/2009/04/24/267393.html#Feedback 0 http://www.tkk7.com/javacap/comments/commentRss/267393.html http://www.tkk7.com/javacap/services/trackbacks/267393.html
Command Network
Description
After
a long lasting war on words, a war on arms finally breaks out between
littleken’s and KnuthOcean’s kingdoms. A sudden and violent assault by
KnuthOcean’s force has rendered a total failure of littleken’s command
network. A provisional network must be built immediately. littleken
orders snoopy to take charge of the project.
With the situation
studied to every detail, snoopy believes that the most urgent point is
to enable littenken’s commands to reach every disconnected node in the
destroyed network and decides on a plan to build a unidirectional
communication network. The nodes are distributed on a plane. If
littleken’s commands are to be able to be delivered directly from a
node A to another node B, a wire will have to be built along the
straight line segment connecting the two nodes. Since it’s in wartime,
not between all pairs of nodes can wires be built. snoopy wants the
plan to require the shortest total length of wires so that the
construction can be done very soon.
Input
The input contains several test cases. Each test case starts with a line containing two integer N (N ≤ 100), the number of nodes in the destroyed network, and M (M ≤ 104 ), the number of pairs of nodes between which a wire can be built. The next N lines each contain an ordered pair xi and yi , giving the Cartesian coordinates of the nodes. Then follow M lines each containing two integers i and j between 1 and N (inclusive) meaning a wire can be built between node i and node j
for unidirectional command delivery from the former to the latter.
littleken’s headquarter is always located at node 1. Process to end of
file.
Output
For
each test case, output exactly one line containing the shortest total
length of wires to two digits past the decimal point. In the cases that
such a network does not exist, just output ‘poor snoopy
’.
涓寮濮嬫病浠旂粏璇婚錛屼竴鐪嬩互涓烘槸鏈灝忕敓鎴愭爲鍛紝緇撴灉Krusal綆楁硶涓婂幓WA浜嗭紝Prim綆楁硶涔焀A,淇慨鏀規敼涓鐩碬A錛岀浜屽ぉ鍙戠幇鏈鏄鍦ㄦ湁鍚戝浘涓婇潰鏋勯犳渶灝忔爲褰㈠浘銆?br />
鎸夌収钁楀悕鐨刏hu-Liu綆楁硶錛屼粩緇嗗疄鐜頒簡涓杈癸紝緇堜簬AC浜嗐?br />
鎸夌収鎴戠殑鐞嗚В鎬葷粨涓嬭綆楁硶錛岃綆楁硶瀵規瘡涓粨鐐癸紝闄ゆ牴鑺傜偣澶栧鎵炬渶灝忓叆杈癸紝
1錛夊鏋滆繖浜涘叆杈逛笉鏋勬垚鐜紝閭d箞瀹規槗璇佹槑榪欎簺杈規瀯鎴愭渶灝忔爲褰㈠浘銆?br />
璇佹槑錛氳鍔犱笂鏍硅妭鐐箁涓鍏盢涓偣錛岄偅涔堜竴鍏辨湁N-1鏉¤竟錛岃瘉鏄庝粠r鑳藉埌姣忎釜鐐癸紝鑻ュ瓨鍦ㄤ竴鐐箆錛屼嬌寰椾粠r鍒皏娌℃湁璺緞錛岄偅涔堬紝鍋囪浠巚鍙嶅悜鍥為蹇呯劧鏋勬垚鐜紝鍥犱負姣忎釜鐐歸櫎浜唕閮芥湁鍏ヨ竟錛屽鏋滀笉鏋勬垚鐜紝璇ヨ礬寰勫彲浠ユ棤絀峰ぇ銆?br />
2錛夊鏋滃瓨鍦ㄧ幆錛屾垜浠妸鐜敹緙╂垚涓涓偣錛屾洿鏂扮浉搴旂殑鍏ヨ竟鍜屽嚭杈癸紝寰楀埌鏂扮殑鍥綠',浣垮緱鍘熼棶棰樺湪G'涓瓑鏁堬細
鎬庝箞鏀剁緝鍛紵
鍋囪鎴戜滑鎶婄幆鏀剁緝鎴愮幆涓婄殑浠繪剰涓鐐箆錛屾墍鏈夎繘鐜殑杈瑰拰鍑虹幆鐨勮竟鑷姩鍙樻垚v鐨勮竟錛堝鏋滃凡鏈夛紝鍙栭暱搴︽渶鐭殑錛夛紝鍏朵綑鐐規爣璁頒負鍒犻櫎錛屾洿鏂頒笉鍦ㄧ幆涓婄殑鎵鏈夌偣榪涘叆璇ョ幆鐨勯暱搴ost涓篶ost-cost(prev[x],x);鍏朵腑鐐箈涓鴻繘鍏ョ幆鐨勮竟鍦ㄧ幆涓婄殑绔偣銆傚嚭杈逛繚鎸佷笉鍙樸?br />
榪欓噷涓轟粈涔堣繖涔堟洿鏂幫紵鍥犱負榪欐牱鏇存柊浣垮緱鎴戜滑鐨勭畻娉曞湪鏂板浘涓婃槸絳夋晥鐨勩備換浣曠幆鐨勮В鍐沖悗鎰忓懗鐫鍦ㄦ柊鍥鵑噷闈㈠緱涓烘敼鏀剁緝鍚庣殑鐐瑰鎵炬柊鐨勫叆杈癸紝鑰屽疄闄呯殑鑺辮垂搴旇鏄柊鐨勫叆杈瑰噺鍘誨師鏈夌殑鍏ヨ竟闀垮害錛屾垜浠殑綆楁硶鍦ㄦ壘鍒扮幆鐨勬椂鍊欏氨鎶婄幆涓婃墍鏈夌殑杈圭殑闀垮害璁$畻鍦ㄨ姳璐瑰唴浜?鑰屽鍑鴻竟鏄病鏈夊獎鍝嶇殑銆?br />
鍒拌繖綆楁硶鐨勬鏋跺熀鏈嚭鏉ヤ簡銆傚綋涓烘煇鐐規病鎵懼埌鍏ヨ竟鐨勬椂鍊欙紝鎰忓懗鐫鏃犺В銆備負浜嗗姞蹇棤瑙g殑渚︽祴錛屾垜浠厛榪愯涓閬岲FS鎼滅儲錛屽亣濡備粠鏍硅妭鐐瑰嚭鍙戯紝鍙Е鍙婄殑鑺傜偣鏁板皬浜嶯-1(涓嶅惈r)鍒欐剰鍛崇潃鏃犺В銆傚弽涔嬶紝鑲畾鏈夎В銆?
涓轟粈涔堬紵
鍥犱負濡傛灉鍙Е鍙婃暟灝忎簬N-1,鎰忓懗鐫鏌愮偣鏄笉鍙Е鍙婄殑錛屼篃灝辨槸鍘熷浘涓嶆槸寮辮繛閫氥傚璇ョ偣鏉ヨ涓嶅瓨鍦ㄤ粠r鍒板畠鐨勮礬寰勩傚弽涔嬶紝浠巖鍒版煇鐐歸兘鏈変竴鏉¤礬寰勶紝娌跨潃璇ヨ礬寰勫氨鑳芥壘鍒扮粨鐐圭殑鍏ヨ竟銆?br />
絎簩涓棶棰樻槸錛屽浣曞揩閫熶睛嫻嬬幆鍛紵
鎴戜嬌鐢ㄤ簡涓涓笉鐩鎬氦闆嗐傚洖蹇咾rusal鐨勭畻娉曞疄鐜伴噷闈篃鏄嬌鐢ㄤ笉鐩鎬氦闆嗘潵閬垮厤鎵句駭鐢熺幆鐨勬渶灝忚竟銆?br />
涓嬮潰鏄垜鐨勪唬鐮侊細
// 3164.cpp : Defines the entry point for the console application.
//
#include < iostream >
#include < cmath >
using namespace std;
typedef struct _Point
{
double x;
double y;
double distanceTo( const struct _Point & r)
{
return sqrt((x - r.x) * (x - r.x) + (y - r.y) * (y - r.y));
}
}Point;
const int MAX_V = 100 ;
const int MAX_E = 10000 ;
const double NO_EDGE = 1.7976931348623158e+308 ;
Point vertexes[MAX_V] = { 0 };
int parents[MAX_V] = { 0 };
int ranks[MAX_V] = { 0 };
double G[MAX_V][MAX_V] = { 0 };
bool visited[MAX_V] = { 0 };
bool deleted[MAX_V] = { 0 };
int prev[MAX_V] = { 0 };
int nVertex = 0 ;
int nEdge = 0 ;
int u_find( int a)
{
if (parents[a] == a) return a;
parents[a] = u_find(parents[a]);
return parents[a];
}
void u_union( int a, int b)
{
int pa = u_find(a);
int pb = u_find(b);
if (ranks[pa] == ranks[pb])
{
ranks[pa] ++ ;
parents[pb] = pa;
} else if (ranks[pa] < ranks[pb])
{
parents[pa] = pb;
}
else
{
parents[pb]= pa;
}
}
void DFS( int v, int & c)
{
visited[v] = true ;
for ( int i = 1 ;i < nVertex;i ++ )
{
if ( ! visited[i] && G[v][i] < NO_EDGE)
{
c += 1 ;
DFS(i,c);
}
}
}
void doCycle( int s, int t, double & cost)
{
memset(visited, 0 , sizeof ( bool ) * nVertex);
int i = s;
do
{
visited[i]= true ;
cost += G[prev[i] - 1 ][i];
// cout<<"from "<<(prev[i]-1)<<" to "<<i<<" (cycle)"<<" weight:"<<G[prev[i]-1][i]<<endl;
i = prev[i] - 1 ;
} while (i != s);
do
{
for ( int k = 0 ;k < nVertex;k ++ )
{
if ( ! deleted[k] &&! visited[k])
{
if (G[k][i] < NO_EDGE)
{
if (G[k][i] - G[prev[i] - 1 ][i] < G[k][s])
{
G[k][s] = G[k][i] - G[prev[i] - 1 ][i];
// cout<<"1.update ["<<k<<","<<s<<"] at "<<i<<" as "<<G[k][s]<<endl;
}
}
if (G[i][k] < NO_EDGE)
{
if (G[i][k] < G[s][k])
{
G[s][k] = G[i][k];
// cout<<"2.update ["<<s<<","<<k<<"] at "<<i<<" as "<<G[s][k]<<endl;
}
}
}
}
if (i != s)
{
deleted[i] = true ;
// cout<<"mark "<<i<<" as deleted"<<endl;
}
i = prev[i] - 1 ;
} while (i != s);
}
int main( void )
{
while (cin >> nVertex >> nEdge)
{
int s,t;
int nv = 0 ;
bool cycle = 0 ;
double cost = 0 ;
memset(vertexes, 0 , sizeof (vertexes));
memset(visited, 0 , sizeof (visited) );
memset(deleted, 0 , sizeof (deleted));
memset(G, 0 , sizeof (G));
memset(prev, 0 , sizeof (prev));
memset(ranks, 0 , sizeof (ranks));
memset(parents, 0 , sizeof (parents));
for ( int i = 0 ;i < nVertex;i ++ )
{
cin >> vertexes[i].x >> vertexes[i].y;
parents[i] = i;
for ( int j = 0 ;j < nVertex;j ++ )
{
G[i][j] = NO_EDGE;
}
}
for ( int i = 0 ;i < nEdge;i ++ )
{
cin >> s >> t;
if (t == 1 || s == t) continue ;
G[s - 1 ][t - 1 ] = vertexes[s - 1 ].distanceTo(vertexes[t - 1 ]);
}
DFS( 0 ,nv);
if (nv < nVertex - 1 )
{
cout << " poor snoopy " << endl;
continue ;
}
do {
cycle = false ;
for ( int i = 0 ;i < nVertex;i ++ ){parents[i] = i;}
memset(ranks, 0 , sizeof ( bool ) * nVertex);
for ( int i = 1 ; i < nVertex; i ++ ) {
double minimum = NO_EDGE;
if (deleted[i]) continue ;
for ( int k = 0 ;k < nVertex;k ++ )
{
if ( ! deleted[k] && minimum > G[k][i])
{
prev[i] = k + 1 ;
minimum = G[k][i];
}
}
if (minimum == NO_EDGE)
{
throw 1 ;
}
if (u_find(prev[i] - 1 ) == u_find(i)) {
doCycle(prev[i] - 1 ,i, cost);
cycle = true ;
break ;
}
else
{
u_union(i,prev[i]- 1 );
}
}
} while (cycle);
for ( int i = 1 ; i < nVertex; i ++ ) {
if ( ! deleted[i])
{
cost += G[prev[i] - 1 ][i];
// cout<<"from "<<(prev[i]-1)<<" to "<<i<<" weight:"<<G[prev[i]-1][i]<<endl;
}
}
printf( " %.2f\n " ,cost);
}
}
]]> 銆婄畻娉曟璁恒嬬涓绔犱範棰?5璇佹槑錛圵ilson瀹氱悊) http://www.tkk7.com/javacap/archive/2009/04/10/264936.htmlDoubleH DoubleH Fri, 10 Apr 2009 14:38:00 GMT http://www.tkk7.com/javacap/archive/2009/04/10/264936.html http://www.tkk7.com/javacap/comments/264936.html http://www.tkk7.com/javacap/archive/2009/04/10/264936.html#Feedback 1 http://www.tkk7.com/javacap/comments/commentRss/264936.html http://www.tkk7.com/javacap/services/trackbacks/264936.html
絎竴绔犵殑涔犻闅懼害閫備腑錛岃繖閲屾娊鍑虹35棰樻潵錛岃繖棰樻槸璇佹槑Wilson瀹氱悊銆?br />
Wilson瀹氱悊錛?br />
N鏄竴涓礌鏁板綋涓斾粎褰? (N-1)! ≡ -1(mod N)
璇佹槑錛?br />
棣栧厛鎴戜滑璇佹槑鑻鏄礌鏁幫紝閭d箞絳夊紡鎴愮珛錛屽浜嶯=2,榪欐槸寰堟槑鏄劇殑銆備互涓嬭瘉鏄嶯>2 鐨勬儏褰€?br />
1錛夎嫢N鏄礌鏁幫紝閭d箞鍏充簬N鍚屼綑鐨勪箻娉曠兢G={1,2,3....N-1}
緹姣忎釜鍏冪礌閮芥湁閫嗗厓錛屾槧灝?f:a -> a^-1 錛宖(a)=a^-1 鏄竴涓竴涓鏄犲皠銆傜幇鍦紝浠誨彇涓涓厓绱狅紝瀹冪殑閫嗗厓瑕佷箞鏄叾瀹冧竴涓厓绱狅紝鎴栬呮槸瀹冩湰韜?鎴戜滑鍋囪鍏朵腑鍏冪礌x鐨勯嗗厓鏄畠鏈韓錛岄偅涔坸*x ≡1(mod N) =>(x+1)*(x-1)=K*N,鑰孨鏄礌鏁幫紝鎵浠ヨ涔坸=N-1,瑕佷箞x=1銆備篃灝辨槸璇達紝闄や簡榪欎袱涓厓绱狅紝鍏跺畠鐨勫厓绱犵殑閫嗗厓閮芥槸鏄犲皠鍒板埆鐨勫厓绱犵殑銆傝孨>2,鏄鏁幫紝鎵浠ュ厓绱犲叡鏈塏-1涓紝涔熷氨鏄伓鏁頒釜鍏冪礌銆傝繖鏍鳳紝闄や簡1鍜孨-1澶栧墿浣欑殑N-3涓厓绱犲垰濂界粨鎴愪袱涓や竴瀵?x,y)(閫嗗厓鏄敮涓鐨勶級浣垮緱f(x)=y=x^-1,涔熷氨鏄痻y≡1(mod N).
鐜板湪鎶奊鐨勫厓绱犲叏閮ㄤ箻璧鋒潵錛岃浜掍負閫嗗厓鐨勫厓绱犵粍鎴愪竴瀵歸偅涔?N-1)!=1*(N-1)*(x1*y1)*(x2*y2)...(xk*yk)≡1*(N-1)*1*1...1 (mod N)≡-1(mod N).
榪欐牱錛屾垜浠瘉鏄庝簡涓涓柟鍚戜簡錛屼笅闈㈡垜浠瘉鏄庡彟涓涓柟鍚?br />
2錛夎嫢(N-1)! ≡ -1(mod N)鎴愮珛錛屽垯N鏄礌鏁幫紝鑻ヤ笉鐒訛紝浠?N鏄拰鏁般傚垯(N-1)!鑲畾鏁撮櫎N,鍥犱負N鐨勬瘡涓洜瀛恜婊¤凍p>1,p<N銆?br />
鐜板湪浠?N-1)!=K1*N.鍙?N-1)! ≡ -1(mod N) => K1*N ≡ -1(mod N),鐢卞悓浣欐ц川鐭ワ紝瀛樺湪K2浣垮緱K1*N+1=K2*N,涓よ竟鍚屾椂闄や互N寰桲1+1/N=K2.鏄劇劧錛岃繖鏄笉鍙兘鐨勶紝鎵浠ヨ嫢(N-1)! ≡ -1(mod N)鎴愮珛錛屽垯N鏄礌鏁?br />
璇佹槑瀹屾瘯錛?br />
榪欓噷鐢ㄧ兢鐨勬蹇佃兘澶熺畝鍖栦竴瀹氱殑鎻忚堪錛屽叾瀹炲彲浠ュ畬鍏ㄤ笉鐢ㄧ兢鐨勬蹇電殑錛屽彧涓嶈繃榪欐牱涓鏉ワ紝鎻忚堪鏇撮暱鐐癸紝綣佺悙鐐癸紒
]]> [綆楁硶]09鑰冪爺鏁版嵁緇撴瀯璇曢瑙f硶 http://www.tkk7.com/javacap/archive/2009/01/17/251682.htmlDoubleH DoubleH Sat, 17 Jan 2009 05:56:00 GMT http://www.tkk7.com/javacap/archive/2009/01/17/251682.html http://www.tkk7.com/javacap/comments/251682.html http://www.tkk7.com/javacap/archive/2009/01/17/251682.html#Feedback 5 http://www.tkk7.com/javacap/comments/commentRss/251682.html http://www.tkk7.com/javacap/services/trackbacks/251682.html
浠婂ぉ鍘葷綉涓婄湅浜嗕竴涓?9騫寸殑鑰冪爺璇曢錛岀湅瑙佽棰樼洰(鍥劇墖)錛?br />
鍏堟潵瀹氫箟緇撶偣錛堜負浜嗙畝渚匡紝鐪佺暐set/get)錛?br />
public class Node
{
public int data;
public Node link;
}
鎴戣兘鎯沖埌鐨勪袱縐嶈В娉曪紝涓涓熀浜庨掑綊錛?
閫掑綊鐗堢殑鎬濊礬灝辨槸錛屽熀浜庡綋鍓嶇粨鐐癸紝濡傛灉鍚庝竴涓槸鍊掓暟絎琄-1,閭d箞褰撳墠緇撶偣鏄墍姹傦紝鑻ヤ笉鐒訛紝榪斿洖褰撳墠鏄掓暟絎嚑涓?br />
public int printRKWithRecur(Node head, int k)
{
if (k == 0 || head == null || head.link == null ) return 0 ;
if (_recurFind(head.link,k) >= k) return 1 ;
return 0 ;
}
private final int _recurFind(Node node, int k) {
if (node.link == null )
{
return 1 ;
}
int sRet = _recurFind(node.link,k);
if (sRet == k - 1 )
{
System.out.println( " Got: " + node.data);
return k;
}
return sRet + 1 ;
}
瀵規瘡涓粨鐐癸紝璇ョ畻娉曢兘鍙闂竴嬈★紝鍥犳澶嶆潅搴(N).
絎簩瑙f硶錛岀浉瀵歸掑綊鏉ヨ錛岃繖縐嶆柟娉曞彲浠ョ畻鏄秷闄ら掑綊鐗堬紝鑰屼笖浠庢煇縐嶆剰涔変笂鏉ヨ姣旈掑綊鏇撮珮鏁堬紝璺熺渷絀洪棿錛岄掑綊鐗堝疄闄呬笂鏄妸鍥炴函鐨勬暟鎹瓨鍦ㄦ爤涓婏紝鑰岀増鏂規硶鏄嚜宸卞瓨鍌紝涓斿埄鐢ㄦ暟緇勫疄鐜頒竴涓驚鐜槦鍒楋紝鍙瓨鍌↘涓厓绱犮?
public static class CycleIntQueue
{
int [] datas;
int top = 0 ;
int num = 0 ;
public CycleIntQueue( int n)
{
datas = new int [n];
}
public void push( int i)
{
datas[(top ++ ) % datas.length] = i;
num ++ ;
}
public int numPushed()
{
return num;
}
public int getButtom()
{
return datas[top % datas.length];
}
}
public int printRKWithCycleQueue(Node head, int k)
{
if (k == 0 || head == null ) return 0 ;
CycleIntQueue queue = new CycleIntQueue(k);
Node cur = head.link;
while (cur != null )
{
queue.push(cur.data);
cur = cur.link;
}
if (queue.numPushed() < k) return 0 ;
System.out.println( " Got: " + queue.getButtom());
return 1 ;
}
鏈畻娉曪紝閮芥瘡涓粨鐐逛篃鍙斁涓嬈★紝鍙﹀榪涜涓嬈″叆闃熸搷浣滐紝璇ユ搷浣滃鏉傚害O(1),浠庤岋紝鏁翠釜綆楁硶澶嶆潅搴︿粛鏄疧(N).
]]> 涓涓潚铔欒繃娌崇▼搴忓強鍏惰В鏋?/title> http://www.tkk7.com/javacap/archive/2009/01/06/250184.htmlDoubleH DoubleH Tue, 06 Jan 2009 14:27:00 GMT http://www.tkk7.com/javacap/archive/2009/01/06/250184.html http://www.tkk7.com/javacap/comments/250184.html http://www.tkk7.com/javacap/archive/2009/01/06/250184.html#Feedback 3 http://www.tkk7.com/javacap/comments/commentRss/250184.html http://www.tkk7.com/javacap/services/trackbacks/250184.html
榪戞棩鍦–SDN涓婄湅鍒頒腑杞竴閬撻潰璇曢錛屾尯鏈夋剰鎬濈殑銆?br />
棰樼洰錛氫竴鏉″皬婧笂7鍧楃煶澶達紝濡傚浘鎵紺猴細
鍒嗗埆鏈夊叚鍙潚铔欙細A錛孊錛孋錛孌錛孍錛孎銆侫錛孊錛孋涓夊彧铔欐兂鍘誨彸宀革紝瀹冧滑鍙細浠庡乏鍚戝彸璺籌紱D錛孍錛孎涓夊彧铔欐兂鍘誨乏宀革紝瀹冧滑鍙細浠庡彸鍚戝乏璺熾傞潚铔欐瘡嬈℃渶澶氳煩鍒拌嚜宸卞墠鏂圭2鍧楃煶澶翠笂銆傝闂渶灝戣璺沖嚑嬈℃墍鏈夐潚铔欎笂宀搞傚啓鍑烘楠ゃ?br />
榪欎釜棰樻槸涓礬寰勬悳绱㈢殑闂錛屽湪瑙g┖闂存悳绱㈡墍鏈夌殑瑙o紝騫舵壘鍑烘渶浼樼殑瑙f硶錛堝嵆姝ラ鏈灝戠殑錛夈?br />
閭d箞鎬庝箞綆楁槸涓涓В鍛紵鍏蜂綋鑰岃█灝辨槸鏈鍚庣煶澶翠笂娌℃湁闈掕洐浜嗐?br />
鎴戜滑鍏堢粰棰樼洰寤烘ā錛?鍧楃煶澶達紝鍏朵笂鍙互鏄病闈掕洐錛屽彲浠ユ湁涓鍙線宸﹁煩鐨勯潚铔欙紝涔熷彲浠ユ湁涓鍙線鍙寵煩鐨勯潚铔欍傚彲浠ユ妸榪?鍧楃煶澶寸湅鎴愪竴涓暣浣擄紝鏉ヨ〃紺轟竴涓姸鎬併傝繖閲屾垜浠妸榪?鍧楃煶澶寸湅鎴愪竴涓暟緇勶紝閲岄潰鍙兘鏈?,1,2涓夌鍊鹼紝榪欐牱琛ㄧず錛岄偅涔堝垵濮嬫椂涓猴細
1 , 1 , 1 , 0 , 2 , 2 , 2
鎴戜滑鎶婂畠鍐嶈〃紺烘垚涓涓暟瀛楋紝鏉ヨ〃紺虹姸鎬佸鹼紝榪欎釜鍊兼妸榪欎釜鏁扮粍鎸変笁榪涘埗鎷兼垚涓涓暟瀛楋紝鎴戜滑鐢ㄤ竴涓緟鍔╁嚱鏁版潵鍋氳繖浠朵簨鎯咃細
private final int makeS() {
int r = 0 ;
int p = 1 ;
for ( int i = 0 ;i < 7 ;i ++ )
{
r += p * states[i];
p *= 3 ;
}
return r;
}
閭d箞棰樼洰鐜板湪鍙樻垚浠庣姸鎬?11022杞崲鎴愮姸鎬?000000錛屾墍闇鏈灝戠殑姝ラ.
閭d箞鐘舵佹槸鎬庢牱杞崲鐨勫憿錛?br />
寰堟樉鐒躲傦紝姣忔闈掕洐璺抽兘浼氳Е鍙戠姸鎬佺殑杞崲錛屾垜浠湪姣忎釜鐘舵佹椂鎼滅儲姣忕鍙兘鐨勮漿鎹紝鎴戜滑璁板垵濮嬬姸鎬佷負S(S絳変簬涓夎繘鍒?11022錛夎瑕佹眰瑙g殑鍊間負OPT(S),鍋囧鍙互杞崲鍒皌1,t2,...tk.
閭d箞錛屾樉鐒?br />
OPT(S) = min( 1 + OPT(t1), 1 + OPT(t2), ., 1 + OPT(tk));
鍙﹀錛岀敱浜庢渶緇堢姸鎬佷負0,鎵浠PT(0)=0,灝辨槸璇村凡緇忓湪鏈緇堢姸鎬佷簡錛屽氨涓嶉渶瑕佷竴姝ュ氨鍙互浜嗐?br />
鏈変簡涓婇潰榪欎釜絳夊紡錛屾垜浠彲浠ラ掑綊姹傝В浜嗭紝浣嗘槸濡傛灉鍗曠函鐨勯掑綊錛屼細瀵艱嚧澶ч噺鐨勯噸澶嶈綆楋紝鎵浠ヨ繖閲屾垜浠敤澶囧繕褰曠殑鏂規硶錛岃涓嬪凡緇忔眰瑙e嚭鏉ョ殑OPT(x),鏀懼湪涓涓暟緇勯噷錛岀敱浜庡彧鏈?鍧楃煶澶達紝鎵浠ユ渶澶氭垜浠渶瑕?^7=2187涓姸鎬併傛垜浠敤涓涓?187涓厓绱犵殑鏁扮粍, 鍏朵腑絎琲涓厓绱犺〃紺篛PT(i)錛屽垵濮嬪寲姣忎釜鍏冪礌鐢?1琛ㄧず榪樻湭姹傝В銆侽PT(0) 鍙洿鎺ュ垵濮嬪寲涓?.
鍒版鎴戜滑榪樻湁涓涓棶棰橈紝鎬庝箞鑳藉鍦ㄧ畻娉曠粨鏉熺殑鏃跺欐墦鍗板嚭鏈浼樼殑姝ラ鍛紵鎸夌収榪欎釜姝ラ錛屾垜浠彲浠ラ噸寤哄嚭闈掕洐鏄浣曞湪鏈浼樼殑鎯呭喌涓嬭繃娌崇殑銆備負姝わ紝鎴戜滑鍙互鍐嶇敤涓涓楠ゆ暟緇勶紝姣忔鍦ㄩ噰鍙栨渶浼樻楠ょ殑鏃跺欒褰曚笅鏉ャ?br />
鏁翠釜綆楁硶濡備笅錛?br />
package test;
import java.util.Arrays;
/**
*
* @author Yovn
*
*/
public class FrogJump {
private int steps[];
private int states[];
private static class Step
{
int offset=-1;
int jump;
int jumpTo;
}
private Step jumps[];
private int initS;
public FrogJump()
{
steps=new int[81*27];
states=new int[7];
for(int i=0;i<3;i++)states[i]=1;
for(int i=4;i<7;i++)states[i]=2;
Arrays.fill(steps, -1);
steps[0]=0;
jumps=new Step[81*27];
initS=makeS();
}
public int shortestSteps(int s)
{
if(steps[s]==-1)
{
int minStep=Integer.MAX_VALUE;
Step oneStep=new Step();
for(int i=0;i<7;i++)
{
if(states[i]==1)
{
if(i>4)
{
states[i]=0;
minStep = recurFind(minStep,oneStep,i,7-i);
states[i]=1;
}
else
{
if(states[i+1]==0)
{
states[i]=0;
states[i+1]=1;
minStep = recurFind(minStep,oneStep,i,1);
states[i]=1;
states[i+1]=0;
}
if(states[i+2]==0)
{
states[i]=0;
states[i+2]=1;
minStep = recurFind(minStep,oneStep,i,2);
states[i]=1;
states[i+2]=0;
}
}
}
else if(states[i]==2)
{
if(i<2)
{
states[i]=0;
minStep = recurFind(minStep,oneStep,i,-1-i);
states[i]=2;
}
else
{
if(states[i-1]==0)
{
states[i]=0;
states[i-1]=2;
minStep = recurFind(minStep,oneStep,i,-1);
states[i]=2;
states[i-1]=0;
}
if(states[i-2]==0)
{
states[i]=0;
states[i-2]=2;
minStep = recurFind(minStep,oneStep,i,-2);
states[i]=2;
states[i-2]=0;
}
}
}
}
steps[s]=minStep;
jumps[s]=oneStep;
}
return steps[s];
}
private final int recurFind(int minStep, Step oneStep, int pos, int jump) {
int toS=makeS();
int r=shortestSteps(toS);
if(r<minStep-1)
{
oneStep.jump=jump;
oneStep.offset=pos;
oneStep.jumpTo=toS;
minStep=r+1;
}
return minStep;
}
public void printPath()
{
int s=initS;
int i=1;
while(s!=0)
{
System.out.println("["+(i++)+"] Frog at #"+jumps[s].offset+" jumps #"+jumps[s].jump);
s=jumps[s].jumpTo;
}
}
private final int makeS() {
int r=0;
int p=1;
for(int i=0;i<7;i++)
{
r+=p*states[i];
p*=3;
}
return r;
}
/**
* @param args
*/
public static void main(String[] args) {
FrogJump fj=new FrogJump();
int steps=fj.shortestSteps(fj.initS);
System.out.println("use "+steps+" steps!");
fj.printPath();
}
}
榪愯緇撴灉錛?br />
use 21 steps !
[1 ] Frog at # 2 jumps # 1
[2 ] Frog at # 4 jumps # - 2
[3 ] Frog at # 5 jumps # - 1
[4 ] Frog at # 3 jumps # 2
[5 ] Frog at # 1 jumps # 2
[6 ] Frog at # 0 jumps # 1
[7 ] Frog at # 2 jumps # - 2
[8 ] Frog at # 0 jumps # - 1
[9 ] Frog at # 4 jumps # - 2
[10 ] Frog at # 2 jumps # - 2
[11 ] Frog at # 0 jumps # - 1
[12 ] Frog at # 5 jumps # 2
[13 ] Frog at # 3 jumps # 2
[14 ] Frog at # 1 jumps # 2
[15 ] Frog at # 5 jumps # 2
[16 ] Frog at # 3 jumps # 2
[17 ] Frog at # 5 jumps # 2
[18 ] Frog at # 6 jumps # - 1
[19 ] Frog at # 5 jumps # - 2
[20 ] Frog at # 3 jumps # - 2
[21 ] Frog at # 1 jumps # - 2
]]> 銆愬垎浜戜粖鏃ユ煇鍏徃鐨勭數璇濋潰璇曢 http://www.tkk7.com/javacap/archive/2008/12/10/245571.htmlDoubleH DoubleH Wed, 10 Dec 2008 13:44:00 GMT http://www.tkk7.com/javacap/archive/2008/12/10/245571.html http://www.tkk7.com/javacap/comments/245571.html http://www.tkk7.com/javacap/archive/2008/12/10/245571.html#Feedback 8 http://www.tkk7.com/javacap/comments/commentRss/245571.html http://www.tkk7.com/javacap/services/trackbacks/245571.html
1.鏁村嚭7
2.鍚勪綅涓婄殑鏁板瓧涔嬪拰鏁撮櫎7錛?姣斿34)
3.浠繪剰浣嶄笂鍖呭惈鏁板瓧7
闄勬垜鐨勪唬鐮侊細
void printN( int n)
{
int c = 0 ;
int i = 7 ;
do
{
if (i % 7 == 0 )
{
printf( " %d\n " ,i);
c ++ ;
}
else
{
int j = i % 10 ;
int k = j;
int s = k;
int p = 10 ;
while (k<i)
{
if (j == 7 )
{
printf( " %d\n " ,i);
s = 0 ;
c ++ ;
break ;
}
else
{
j= ((i - k) / p) % 10 ;
s += j;
k = j * p + k;
p *= 10 ;
}
}
if (s && s % 7 == 0 )
{
printf( " %d\n " ,i);
c ++ ;
}
}
i ++ ;
} while (c < n);
}
]]>
主站蜘蛛池模板:
亚洲熟妇无码一区二区三区导航 |
aa级一级天堂片免费观看 |
99亚偷拍自图区亚洲 |
a视频在线免费观看 |
亚洲熟伦熟女专区hd高清 |
久久综合亚洲鲁鲁五月天 |
啦啦啦中文在线观看电视剧免费版 |
亚洲经典千人经典日产 |
亚洲视频在线观看一区 |
亚洲色精品aⅴ一区区三区 |
国产免费不卡视频 |
久久久久久免费一区二区三区 |
亚洲国产精品久久久久秋霞影院 |
色婷婷7777免费视频在线观看 |
午夜老司机永久免费看片 |
中文字幕不卡免费视频 |
亚洲综合伊人制服丝袜美腿 |
亚洲国产精品碰碰 |
在线看片无码永久免费aⅴ |
久久成人无码国产免费播放 |
国产精品免费久久久久电影网 |
亚洲人成7777影视在线观看 |
亚洲视频一区网站 |
久久青青草原亚洲av无码app |
亚洲AV无一区二区三区久久 |
永久黄网站色视频免费 |
成人毛片手机版免费看 |
一区二区无码免费视频网站 |
在线看片免费不卡人成视频 |
福利免费观看午夜体检区 |
妻子5免费完整高清电视 |
免费在线观影网站 |
国产精品亚洲一区二区三区久久 |
日韩亚洲AV无码一区二区不卡 |
亚洲AV无码国产在丝袜线观看 |
亚洲AV无码一区二区二三区入口 |
国产aⅴ无码专区亚洲av |
久久精品夜色国产亚洲av |
亚洲国产精品久久久久 |
亚洲第一页在线观看 |
久久精品亚洲AV久久久无码 |