格點數目;及兄弟數字分析

紫鳳發表於2013-08-26

今日面試題:格點數目

給定平面上的兩個格點P1(x1,y1),P2(x2,y2),線上段P1P2上,除P1、P2外,一共有多少個格點?格點定義為x和y都是整數的點。

====================================

兄弟數字分析

原題

給定一個數X,他的兄弟數Y定義為:是由X中的數字組合而成,並且Y是大於X的數中最小的。例如,38276的兄弟數字為38627。給定X,求Y。

分析

這個題目當然有暴力的方法,列出所有的排列組合,然後然後找到大於X中,最小的Y。即,找到兄弟數字。

那有沒有更好的方法呢?不想對所有情況進行窮舉,就要想辦法,儘可能縮小要處理的範圍,一般的思路,從右邊開始,兩兩交換,檢視是否可以找到Y,最開始考慮兩位,進而考慮三位,依次類推,那麼如何確定,要考慮多少位呢?假設X的形式如下:x1x2x3...xky1y2y3y4,並且其中y1>y2>y3>y4,xk

下面以一個具體例子來說明上述過程:

3 4 7 2 2 6 4 1

首先找到,從右邊開始的遞增的、儘可能長的數位,這裡是641。

3 4 7 2 2 (6 4 1)

則,選取前一位數字2,進行交換。641中,大於2的最小的值是4,則作如下交換:

3 4 7 2 4 (6 2 1)

為了得到最小值,對621,從小到大進行排序,得到

3 4 7 2 4 1 2 6

則,Y為34724126.

【分析完畢】

本文來自微信:待字閨中,2013-08-20釋出,原創@陳利人 ,歡迎大家繼續關注微信公眾賬號“待字閨中”。

相關文章