锘??xml version="1.0" encoding="utf-8" standalone="yes"?>色欲aⅴ亚洲情无码AV,亚洲av永久无码天堂网,无码久久精品国产亚洲Av影片http://www.tkk7.com/javacap/鏉備竷鏉傚叓銆傘傘備竴瀹朵箣璦zh-cnFri, 09 May 2025 10:37:36 GMTFri, 09 May 2025 10:37:36 GMT60姹傝繛緇鏁存暟浣垮緱鍏跺拰涓虹粰瀹氱殑涓涓鏁存暟鐨勬瀯閫犳цВ娉?http://www.tkk7.com/javacap/archive/2011/12/01/365333.htmlDoubleHDoubleHThu, 01 Dec 2011 14:09:00 GMThttp://www.tkk7.com/javacap/archive/2011/12/01/365333.htmlhttp://www.tkk7.com/javacap/comments/365333.htmlhttp://www.tkk7.com/javacap/archive/2011/12/01/365333.html#Feedback2http://www.tkk7.com/javacap/comments/commentRss/365333.htmlhttp://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;
}


DoubleH 2011-12-01 22:09 鍙戣〃璇勮
]]>
DP鐨勫嚑閬撶粌鎵嬮http://www.tkk7.com/javacap/archive/2011/02/06/343913.htmlDoubleHDoubleHSun, 06 Feb 2011 13:13:00 GMThttp://www.tkk7.com/javacap/archive/2011/02/06/343913.htmlhttp://www.tkk7.com/javacap/comments/343913.htmlhttp://www.tkk7.com/javacap/archive/2011/02/06/343913.html#Feedback0http://www.tkk7.com/javacap/comments/commentRss/343913.htmlhttp://www.tkk7.com/javacap/services/trackbacks/343913.html/**  *   */ pack...  闃呰鍏ㄦ枃

DoubleH 2011-02-06 21:13 鍙戣〃璇勮
]]>
鍩轟簬JDK7 NIO2鐨勯珮鎬ц兘web鏈嶅姟鍣ㄥ疄璺典箣浜?/title><link>http://www.tkk7.com/javacap/archive/2009/12/04/304813.html</link><dc:creator>DoubleH</dc:creator><author>DoubleH</author><pubDate>Fri, 04 Dec 2009 09:57:00 GMT</pubDate><guid>http://www.tkk7.com/javacap/archive/2009/12/04/304813.html</guid><wfw:comment>http://www.tkk7.com/javacap/comments/304813.html</wfw:comment><comments>http://www.tkk7.com/javacap/archive/2009/12/04/304813.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.tkk7.com/javacap/comments/commentRss/304813.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javacap/services/trackbacks/304813.html</trackback:ping><description><![CDATA[     鎽樿: 鍓嶄竴綃囧崥瀹紝鎴戠畝鍗曟彁浜嗕笅鎬庝箞涓篘IO2澧炲姞TransmitFile鏀寔錛屾枃浠朵紶閫佸悶鍚愰噺鏄竴涓ц兘鍏蟲敞鐐癸紝姝ゅ錛屽茍鍙戣繛鎺ユ暟涔熸槸閲嶈鐨勫叧娉ㄧ偣銆? 涓嶈繃JDK7涓張涓嬈″仛浜嗙畝鍗曠殑瀹炵幇錛屼笉鏀寔鍚屾椂鎶曢掑涓狝cceptEx璇鋒眰錛屽彧鏀寔涓嬈′竴涓紝榪斿洖鍚庡啀鎶曢掋傝繖鏍鳳紝瀹㈡埛绔繛鎺ョ殑鎺ュ彈閫熷害蹇呯劧澶ф墦鎶樻墸銆備笉鐭ラ亾涓轟粈涔坰un浼氬仛榪欐牱鐨勫疄鐜幫紝WSASend()/WSAReceive()涓嬈″彧鍏佽涓涓繕鏄彲浠ョ悊瑙o紝...  <a href='http://www.tkk7.com/javacap/archive/2009/12/04/304813.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/javacap/aggbug/304813.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/javacap/" target="_blank">DoubleH</a> 2009-12-04 17:57 <a href="http://www.tkk7.com/javacap/archive/2009/12/04/304813.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>JDK7 NIO2 瀹炶返: 澧炲姞 TransmitFile鏀寔http://www.tkk7.com/javacap/archive/2009/11/29/304105.htmlDoubleHDoubleHSun, 29 Nov 2009 07:19:00 GMThttp://www.tkk7.com/javacap/archive/2009/11/29/304105.htmlhttp://www.tkk7.com/javacap/comments/304105.htmlhttp://www.tkk7.com/javacap/archive/2009/11/29/304105.html#Feedback2http://www.tkk7.com/javacap/comments/commentRss/304105.htmlhttp://www.tkk7.com/javacap/services/trackbacks/304105.htmlJDK7鐨凬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 <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);
    }


    
<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 />







DoubleH 2009-11-29 15:19 鍙戣〃璇勮
]]>
鍚戜笂鍙栨暣鐨勪竴涓簲鐢?/title><link>http://www.tkk7.com/javacap/archive/2009/05/04/268781.html</link><dc:creator>DoubleH</dc:creator><author>DoubleH</author><pubDate>Mon, 04 May 2009 03:45:00 GMT</pubDate><guid>http://www.tkk7.com/javacap/archive/2009/05/04/268781.html</guid><wfw:comment>http://www.tkk7.com/javacap/comments/268781.html</wfw:comment><comments>http://www.tkk7.com/javacap/archive/2009/05/04/268781.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.tkk7.com/javacap/comments/commentRss/268781.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javacap/services/trackbacks/268781.html</trackback:ping><description><![CDATA[闂錛?br /> 鏈変釜閾捐〃錛圠ist)錛屾湁N涓厓绱狅紝褰揘寰堝ぇ鐨勬椂鍊欙紝鎴戜滑閫氬父鎯沖垎鎵瑰鐞嗚閾捐〃銆傚亣濡傛瘡嬈″鐞哅鏉?0<M<=N),閭d箞闇瑕佸鐞嗗嚑嬈℃墠鑳藉鐞嗗畬鎵鏈夋暟鎹憿錛?br /> <br /> 闂寰堢畝鍗曪紝鎴戜滑闇瑕?lt;N/M>嬈★紝榪欓噷鎴戜滑鐢?lt;>琛ㄧず鍚戜笂鍙栨暣,[]琛ㄧず鍚戜笅鍙栨暣錛岄偅涔堟庝箞鏉ヨ〃紺鴻繖涓煎憿錛?br /> 鎴戜滑鍙互璇佹槑錛?br /> <N/M>=[(N-1)/M]+1    (0<M<=N,M,N∈Z)<br /> <br /> 涓嶅け涓鑸э紝鎴戜滑璁綨=Mk+r(0<=r<M),<br /> 1錛夊綋r>0鏃訛紝<br /> <br /> 宸﹁竟錛?lt;N/M>=<(Mk+r)/M>=<k+r/M>=k+<r/M>=k+1<br /> 鍙寵竟錛歔(N-1)/M]+1=[(Mk+r-1)/M]+1=[k+(r-1)/M]+1=k+1+[(r-1)/M]=k+1<br /> 2錛夊綋r=0<br /> 宸﹁竟錛?lt;N/M>=k<br /> 鍙寵竟錛歔(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 /> <br /> 鍛介寰楄瘉銆?br /> <br /> 鏈変簡榪欎釜鍏紡錛屾垜浠湪Java浠g爜閲屽彲浠ヨ繖鏍瘋綆?<br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000ff;">int</span><span style="color: #000000;"> nn</span><span style="color: #000000;">=</span><span style="color: #000000;">(N</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">/</span><span style="color: #000000;">M </span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;"><br /> <img src="http://www.tkk7.com/Images/dot.gif" alt="" />.<br /> <br /> </span></div> <br /> 鍥犱負'/'鏄線涓嬪彇鏁寸殑銆?br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <img src ="http://www.tkk7.com/javacap/aggbug/268781.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/javacap/" target="_blank">DoubleH</a> 2009-05-04 11:45 <a href="http://www.tkk7.com/javacap/archive/2009/05/04/268781.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>POJ 3164 鏈灝忔爲褰㈠浘綆楁硶http://www.tkk7.com/javacap/archive/2009/04/24/267393.htmlDoubleHDoubleHFri, 24 Apr 2009 08:39:00 GMThttp://www.tkk7.com/javacap/archive/2009/04/24/267393.htmlhttp://www.tkk7.com/javacap/comments/267393.htmlhttp://www.tkk7.com/javacap/archive/2009/04/24/267393.html#Feedback0http://www.tkk7.com/javacap/comments/commentRss/267393.htmlhttp://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);


    }


}





DoubleH 2009-04-24 16:39 鍙戣〃璇勮
]]>
銆婄畻娉曟璁恒嬬涓绔犱範棰?5璇佹槑錛圵ilson瀹氱悊)http://www.tkk7.com/javacap/archive/2009/04/10/264936.htmlDoubleHDoubleHFri, 10 Apr 2009 14:38:00 GMThttp://www.tkk7.com/javacap/archive/2009/04/10/264936.htmlhttp://www.tkk7.com/javacap/comments/264936.htmlhttp://www.tkk7.com/javacap/archive/2009/04/10/264936.html#Feedback1http://www.tkk7.com/javacap/comments/commentRss/264936.htmlhttp://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 />
榪欓噷鐢ㄧ兢鐨勬蹇佃兘澶熺畝鍖栦竴瀹氱殑鎻忚堪錛屽叾瀹炲彲浠ュ畬鍏ㄤ笉鐢ㄧ兢鐨勬蹇電殑錛屽彧涓嶈繃榪欐牱涓鏉ワ紝鎻忚堪鏇撮暱鐐癸紝綣佺悙鐐癸紒







DoubleH 2009-04-10 22:38 鍙戣〃璇勮
]]>
[綆楁硶]09鑰冪爺鏁版嵁緇撴瀯璇曢瑙f硶http://www.tkk7.com/javacap/archive/2009/01/17/251682.htmlDoubleHDoubleHSat, 17 Jan 2009 05:56:00 GMThttp://www.tkk7.com/javacap/archive/2009/01/17/251682.htmlhttp://www.tkk7.com/javacap/comments/251682.htmlhttp://www.tkk7.com/javacap/archive/2009/01/17/251682.html#Feedback5http://www.tkk7.com/javacap/comments/commentRss/251682.htmlhttp://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).




DoubleH 2009-01-17 13:56 鍙戣〃璇勮
]]>
涓涓潚铔欒繃娌崇▼搴忓強鍏惰В鏋?/title><link>http://www.tkk7.com/javacap/archive/2009/01/06/250184.html</link><dc:creator>DoubleH</dc:creator><author>DoubleH</author><pubDate>Tue, 06 Jan 2009 14:27:00 GMT</pubDate><guid>http://www.tkk7.com/javacap/archive/2009/01/06/250184.html</guid><wfw:comment>http://www.tkk7.com/javacap/comments/250184.html</wfw:comment><comments>http://www.tkk7.com/javacap/archive/2009/01/06/250184.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/javacap/comments/commentRss/250184.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javacap/services/trackbacks/250184.html</trackback:ping><description><![CDATA[<br /> 榪戞棩鍦–SDN涓婄湅鍒頒腑杞竴閬撻潰璇曢錛屾尯鏈夋剰鎬濈殑銆?br /> 棰樼洰錛氫竴鏉″皬婧笂7鍧楃煶澶達紝濡傚浘鎵紺猴細 <br /> <img alt="" src="http://www.tkk7.com/images/blogjava_net/javacap/37151/o_frog.jpg" width="429" height="131" /><br /> 鍒嗗埆鏈夊叚鍙潚铔欙細A錛孊錛孋錛孌錛孍錛孎銆侫錛孊錛孋涓夊彧铔欐兂鍘誨彸宀革紝瀹冧滑鍙細浠庡乏鍚戝彸璺籌紱D錛孍錛孎涓夊彧铔欐兂鍘誨乏宀革紝瀹冧滑鍙細浠庡彸鍚戝乏璺熾傞潚铔欐瘡嬈℃渶澶氳煩鍒拌嚜宸卞墠鏂圭2鍧楃煶澶翠笂銆傝闂渶灝戣璺沖嚑嬈℃墍鏈夐潚铔欎笂宀搞傚啓鍑烘楠ゃ?br /> <br /> 榪欎釜棰樻槸涓礬寰勬悳绱㈢殑闂錛屽湪瑙g┖闂存悳绱㈡墍鏈夌殑瑙o紝騫舵壘鍑烘渶浼樼殑瑙f硶錛堝嵆姝ラ鏈灝戠殑錛夈?br /> 閭d箞鎬庝箞綆楁槸涓涓В鍛紵鍏蜂綋鑰岃█灝辨槸鏈鍚庣煶澶翠笂娌℃湁闈掕洐浜嗐?br /> <br /> <br /> <br /> 鎴戜滑鍏堢粰棰樼洰寤烘ā錛?鍧楃煶澶達紝鍏朵笂鍙互鏄病闈掕洐錛屽彲浠ユ湁涓鍙線宸﹁煩鐨勯潚铔欙紝涔熷彲浠ユ湁涓鍙線鍙寵煩鐨勯潚铔欍傚彲浠ユ妸榪?鍧楃煶澶寸湅鎴愪竴涓暣浣擄紝鏉ヨ〃紺轟竴涓姸鎬併傝繖閲屾垜浠妸榪?鍧楃煶澶寸湅鎴愪竴涓暟緇勶紝閲岄潰鍙兘鏈?,1,2涓夌鍊鹼紝榪欐牱琛ㄧず錛岄偅涔堝垵濮嬫椂涓猴細<br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">2</span><span style="color: #000000;">,</span><span style="color: #000000;">2</span><span style="color: #000000;">,</span><span style="color: #000000;">2</span></div> 鎴戜滑鎶婂畠鍐嶈〃紺烘垚涓涓暟瀛楋紝鏉ヨ〃紺虹姸鎬佸鹼紝榪欎釜鍊兼妸榪欎釜鏁扮粍鎸変笁榪涘埗鎷兼垚涓涓暟瀛楋紝鎴戜滑鐢ㄤ竴涓緟鍔╁嚱鏁版潵鍋氳繖浠朵簨鎯咃細<br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">final</span><span style="color: #000000;"> </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> makeS() {<br />         <br />         </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> r</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />         </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> p</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br />         </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;"><</span><span style="color: #000000;">7</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />         {<br />             r</span><span style="color: #000000;">+=</span><span style="color: #000000;">p</span><span style="color: #000000;">*</span><span style="color: #000000;">states[i];<br />             p</span><span style="color: #000000;">*=</span><span style="color: #000000;">3</span><span style="color: #000000;">;<br />         }<br />         </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> r;<br />     }</span></div> <br /> 閭d箞棰樼洰鐜板湪鍙樻垚浠庣姸鎬?11022杞崲鎴愮姸鎬?000000錛屾墍闇鏈灝戠殑姝ラ.<br /> <br /> 閭d箞鐘舵佹槸鎬庢牱杞崲鐨勫憿錛?br /> 寰堟樉鐒躲傦紝姣忔闈掕洐璺抽兘浼氳Е鍙戠姸鎬佺殑杞崲錛屾垜浠湪姣忎釜鐘舵佹椂鎼滅儲姣忕鍙兘鐨勮漿鎹紝鎴戜滑璁板垵濮嬬姸鎬佷負S(S絳変簬涓夎繘鍒?11022錛夎瑕佹眰瑙g殑鍊間負OPT(S),鍋囧鍙互杞崲鍒皌1,t2,...tk.<br /> 閭d箞錛屾樉鐒?br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">OPT(S)</span><span style="color: #000000;">=</span><span style="color: #000000;">min(</span><span style="color: #000000;">1</span><span style="color: #000000;">+</span><span style="color: #000000;">OPT(t1),</span><span style="color: #000000;">1</span><span style="color: #000000;">+</span><span style="color: #000000;">OPT(t2),<img src="http://www.tkk7.com/Images/dot.gif" alt="" />.,</span><span style="color: #000000;">1</span><span style="color: #000000;">+</span><span style="color: #000000;">OPT(tk));</span></div> <br /> 鍙﹀錛岀敱浜庢渶緇堢姸鎬佷負0,鎵浠PT(0)=0,灝辨槸璇村凡緇忓湪鏈緇堢姸鎬佷簡錛屽氨涓嶉渶瑕佷竴姝ュ氨鍙互浜嗐?br /> 鏈変簡涓婇潰榪欎釜絳夊紡錛屾垜浠彲浠ラ掑綊姹傝В浜嗭紝浣嗘槸濡傛灉鍗曠函鐨勯掑綊錛屼細瀵艱嚧澶ч噺鐨勯噸澶嶈綆楋紝鎵浠ヨ繖閲屾垜浠敤澶囧繕褰曠殑鏂規硶錛岃涓嬪凡緇忔眰瑙e嚭鏉ョ殑OPT(x),鏀懼湪涓涓暟緇勯噷錛岀敱浜庡彧鏈?鍧楃煶澶達紝鎵浠ユ渶澶氭垜浠渶瑕?^7=2187涓姸鎬併傛垜浠敤涓涓?187涓厓绱犵殑鏁扮粍,  鍏朵腑絎琲涓厓绱犺〃紺篛PT(i)錛屽垵濮嬪寲姣忎釜鍏冪礌鐢?1琛ㄧず榪樻湭姹傝В銆侽PT(0) 鍙洿鎺ュ垵濮嬪寲涓?.<br /> <br /> 鍒版鎴戜滑榪樻湁涓涓棶棰橈紝鎬庝箞鑳藉鍦ㄧ畻娉曠粨鏉熺殑鏃跺欐墦鍗板嚭鏈浼樼殑姝ラ鍛紵鎸夌収榪欎釜姝ラ錛屾垜浠彲浠ラ噸寤哄嚭闈掕洐鏄浣曞湪鏈浼樼殑鎯呭喌涓嬭繃娌崇殑銆備負姝わ紝鎴戜滑鍙互鍐嶇敤涓涓楠ゆ暟緇勶紝姣忔鍦ㄩ噰鍙栨渶浼樻楠ょ殑鏃跺欒褰曚笅鏉ャ?br /> <br /> 鏁翠釜綆楁硶濡備笅錛?br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">package test;<br /> <br /> import java.util.Arrays;<br /> /**<br />  * <br />  * @author Yovn<br />  *<br />  */<br /> public class FrogJump {<br />     <br />     private int steps[];<br />     private int states[];<br />     <br />     <br />     private static class Step<br />     {<br />         int offset=-1;<br />         int jump;<br />         int jumpTo;<br />     }<br />     <br />     <br />     private Step jumps[];<br />     private int initS;<br />     public FrogJump()<br />     {<br />         steps=new int[81*27];<br />         states=new int[7];<br />         for(int i=0;i<3;i++)states[i]=1;<br />         for(int i=4;i<7;i++)states[i]=2;<br />         Arrays.fill(steps, -1);<br />         steps[0]=0;<br />         jumps=new Step[81*27];<br />         initS=makeS();<br />     }<br />     <br />     public int shortestSteps(int s)<br />     {<br />         if(steps[s]==-1)<br />         {<br /> <br />             int minStep=Integer.MAX_VALUE;<br />             Step oneStep=new Step();<br />             for(int i=0;i<7;i++)<br />             {<br />                 if(states[i]==1)<br />                 {<br />                     if(i>4)<br />                     {<br />                         states[i]=0;<br />                         minStep = recurFind(minStep,oneStep,i,7-i);<br />                         states[i]=1;<br />                     }<br />                     else<br />                     {<br />                         if(states[i+1]==0)<br />                         {<br />                             states[i]=0;<br />                             states[i+1]=1;<br />                             minStep = recurFind(minStep,oneStep,i,1);<br />                             states[i]=1;<br />                             states[i+1]=0;<br />                             <br />                         }<br />                         if(states[i+2]==0)<br />                         {<br />                             states[i]=0;<br />                             states[i+2]=1;<br />                             minStep = recurFind(minStep,oneStep,i,2);<br />                             states[i]=1;<br />                             states[i+2]=0;<br />                             <br />                         }<br />                     }<br />                 }<br />                 else if(states[i]==2)<br />                 {<br />                     if(i<2)<br />                     {<br />                         states[i]=0;<br />                         <br />                         minStep = recurFind(minStep,oneStep,i,-1-i);<br />                         states[i]=2;<br />                     }<br />                     else<br />                     {<br />                         if(states[i-1]==0)<br />                         {<br />                             states[i]=0;<br />                             states[i-1]=2;<br />                             minStep = recurFind(minStep,oneStep,i,-1);<br />                             states[i]=2;<br />                             states[i-1]=0;<br />                             <br />                         }<br />                         if(states[i-2]==0)<br />                         {<br />                             states[i]=0;<br />                             states[i-2]=2;<br />                             minStep = recurFind(minStep,oneStep,i,-2);<br />                             states[i]=2;<br />                             states[i-2]=0;<br />                             <br />                         }<br />                     }<br />                 }<br />                 <br />             }<br />             steps[s]=minStep;<br />             jumps[s]=oneStep;<br />             <br />             <br />         }<br />         return steps[s];<br /> <br />     }<br /> <br />     private final int recurFind(int minStep, Step oneStep, int pos, int jump) {<br />         int toS=makeS();<br />         int r=shortestSteps(toS);<br />         if(r<minStep-1)<br />         {<br />             oneStep.jump=jump;<br />             oneStep.offset=pos;<br />             oneStep.jumpTo=toS;<br />             minStep=r+1;<br />         }<br />         return minStep;<br />     }<br /> <br />     <br />     <br />     public void printPath()<br />     {<br />         int s=initS;<br />         int i=1;<br />         <br />         while(s!=0)<br />         {<br />             <br />             <br />             System.out.println("["+(i++)+"] Frog at #"+jumps[s].offset+" jumps #"+jumps[s].jump);<br />             s=jumps[s].jumpTo;<br />             <br />         }<br />     }<br />     private final int makeS() {<br />         <br />         int r=0;<br />         int p=1;<br />         for(int i=0;i<7;i++)<br />         {<br />             r+=p*states[i];<br />             p*=3;<br />         }<br />         return r;<br />     }<br /> <br />     /**<br />      * @param args<br />      */<br />     public static void main(String[] args) {<br />         FrogJump fj=new FrogJump();<br />         int steps=fj.shortestSteps(fj.initS);<br />         <br />         System.out.println("use "+steps+" steps!");<br />         fj.printPath();<br /> <br />     }<br /> <br /> }<br /> <br /> </span></div> 榪愯緇撴灉錛?br /> <br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">use </span><span style="color: #000000;">21</span><span style="color: #000000;"> steps</span><span style="color: #000000;">!</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">1</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">2</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">1</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">2</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">4</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">3</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">5</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">4</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">3</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">5</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">1</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">6</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">0</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">1</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">7</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">2</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">8</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">0</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">9</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">4</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">10</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">2</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">11</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">0</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">12</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">5</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">13</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">3</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">14</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">1</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">15</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">5</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">16</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">3</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">17</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">5</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">18</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">6</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">19</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">5</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">20</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">3</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> [</span><span style="color: #000000;">21</span><span style="color: #000000;">] Frog at #</span><span style="color: #000000;">1</span><span style="color: #000000;"> jumps #</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;"><br /> </span></div> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <img src ="http://www.tkk7.com/javacap/aggbug/250184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/javacap/" target="_blank">DoubleH</a> 2009-01-06 22:27 <a href="http://www.tkk7.com/javacap/archive/2009/01/06/250184.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>銆愬垎浜戜粖鏃ユ煇鍏徃鐨勭數璇濋潰璇曢http://www.tkk7.com/javacap/archive/2008/12/10/245571.htmlDoubleHDoubleHWed, 10 Dec 2008 13:44:00 GMThttp://www.tkk7.com/javacap/archive/2008/12/10/245571.htmlhttp://www.tkk7.com/javacap/comments/245571.htmlhttp://www.tkk7.com/javacap/archive/2008/12/10/245571.html#Feedback8http://www.tkk7.com/javacap/comments/commentRss/245571.htmlhttp://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);
}




DoubleH 2008-12-10 21:44 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲熟妇无码一区二区三区导航| aa级一级天堂片免费观看| 99亚偷拍自图区亚洲| a视频在线免费观看| 亚洲熟伦熟女专区hd高清| 久久综合亚洲鲁鲁五月天| 啦啦啦中文在线观看电视剧免费版| 亚洲经典千人经典日产| 亚洲视频在线观看一区| 亚洲色精品aⅴ一区区三区| 国产免费不卡视频| 久久久久久免费一区二区三区| 亚洲国产精品久久久久秋霞影院| 色婷婷7777免费视频在线观看| 午夜老司机永久免费看片| 中文字幕不卡免费视频| 亚洲综合伊人制服丝袜美腿| 亚洲国产精品碰碰| 在线看片无码永久免费aⅴ| 久久成人无码国产免费播放| 国产精品免费久久久久电影网| 亚洲人成7777影视在线观看| 亚洲视频一区网站| 久久青青草原亚洲av无码app| 亚洲AV无一区二区三区久久| 永久黄网站色视频免费| 成人毛片手机版免费看| 一区二区无码免费视频网站| 在线看片免费不卡人成视频| 福利免费观看午夜体检区| 妻子5免费完整高清电视| 免费在线观影网站| 国产精品亚洲一区二区三区久久| 日韩亚洲AV无码一区二区不卡| 亚洲AV无码国产在丝袜线观看| 亚洲AV无码一区二区二三区入口| 国产aⅴ无码专区亚洲av| 久久精品夜色国产亚洲av| 亚洲国产精品久久久久| 亚洲第一页在线观看| 久久精品亚洲AV久久久无码|