C语言麻将递归,【算法SQL面试题】面试问题:麻将胡牌递归算… - 看准网
麻将胡牌算法
运用递归思路,先找出两张一样的牌作将牌,然后在剩下的牌中找顺子和三个一样的牌,当剩余的牌数为0,则排定可以胡牌。目前只是四川麻将的赢牌番型,除去风牌的。可自行进行扩展。(万:11-19,筒:21-29,条31-39),直接可以下载使用。
mjwintable类:
--赢牌倍率
gMJWinRate = { 1, 2, 4, 4, 4, 4, 8, 8, 8, 16, 16, 16, 16, 32, 64, 256 }
gMJWinFJRate = { 2, 2 }
--赢牌基本类型
gMJWinType = { }
--翻1倍
gMJWinType.ordinary = 1 --平胡
--翻2倍
gMJWinType.duiduiHu = 2 --对对胡
--翻4倍
gMJWinType.ordinaryQ = 3 --清一色
gMJWinType.yaojiu = 4 --幺九
gMJWinType.sevendui = 5 --七小对
gMJWinType.jingou = 6 --金钩钓
--翻8倍
gMJWinType.duiduiHuQ = 7 --对对胡清一色
gMJWinType.duiduiHu258 = 8 --对对胡258
gMJWinType.sevenduiQ = 9 --清七小对
--翻16倍
gMJWinType.yaojiuQ = 10 --幺九清一色
gMJWinType.sevenduiL = 11 --龙七小对
gMJWinType.jingouQ = 12 --清金钩钓
gMJWinType.jingou258 = 13 --金钩钓258
--翻32倍
gMJWinType.sevenduiQL = 14 --清龙七小对
--翻64倍
gMJWinType.arhat = 15 --十八罗汉
--翻256倍
gMJWinType.arhatQ = 16 --清十八罗汉
--赢牌附加类型
gMJWinFJType = { }
gMJWinFJType.noyaojiu = 1 --断幺九
gMJWinFJType.doorclear = 2 --门前清
--外部调用方法
--匹配牌型(1--总牌,2--手牌,3--杠数)
--paislist所有牌table包括手牌、碰牌、杠牌(去掉一张按三张算)如:paislist = {11,12,13,14,15,33,21}
--handpaisList手牌table 如:handpaisList = {11,12,13,14,15,33,21}
--gangPengList杠碰牌table
--gangNum杠个数
function CheckMJWinTable( paislist, handpaisList, gangPengList, gangNum )
if #paislist ~= 14 then
do return end
end
table.sort( paislist, function( a, b )
return a < b
end)
table.sort( handpaisList, function( a, b )
return a < b
end)
local isWin = false
local winType = nil
local sameColour = TableBySameColour(paislist)
if gangNum == 4 then-- 判断十八罗汉
if handpaisList[ 1 ] == handpaisList[ 2 ] then
local paiType= math.floor( handpaisList[ 1 ] / 10 )
for pai, v in pairs( gangPengList ) do
if math.floor( pai / 10 ) ~= paiType then
winType= gMJWinType.arhat
do return true, winType end
end
end
winType= gMJWinType.arhatQ
do return true, winType end
end
else
local win, duiLong = MJWinTableBySevenDouble( handpaisList )
if win == true then -- 判断七对
if sameColour == true then
if duiLong == true then
winType= gMJWinType.sevenduiQL
else
winType= gMJWinType.sevenduiQ
end
else
if duiLong == true then
winType= gMJWinType.sevenduiL
else
winType= gMJWinType.sevendui
end
end
do return win, winType end
elseif MJWinTableByCommon( handpaisList ) then
local duiWin = TableByDuiDuiHu( handpaisList, gangPengList, gangNum )
local win19 = MJWinTableByCommon( handpaisList, gangPengList, 19 )
local win258 = MJWinTableByCommon( handpaisList, gangPengList, 258 )
local jingouWin= #handpaisList == 2
if jingouWin == true and ( win258 == true or sameColour == true ) then
if win258 == true then
winType= gMJWinType.jingou258
else
winType= gMJWinType.jingouQ
end
do return true, winType end
elseif win19 == true and sameColour == true then-- 青19
winType= gMJWinType.yaojiuQ
do return true, winType end
elseif duiWin == true and ( win258 == true or sameColour == true ) then
if win258 == true then
winType= gMJWinType.duiduiHu258
else
winType= gMJWinType.duiduiHuQ
end
do return true, winType end
elseif sameColour == true or win19 == true or jingouWin == true then
if sameColour == true then
winType= gMJWinType.ordinaryQ
elseif win19 == true then
winType= gMJWinType.yaojiu
else
winType= gMJWinType.jingou
end
do return true, winType end
elseif duiWin == true then
winType= gMJWinType.duiduiHu
do return true, winType end
else
winType= gMJWinType.ordinary
do return true, winType end
end
end
end
return false
end
--检测附加翻型(在胡牌的基础上判断)参数1--断幺九,参数2--门清
function CheckMJFJType( paislist, handpaisList )
local isDuanYaoJiu= false
local isMenQing= false
local paiNum = 0
for index, pai in pairs( paislist ) do
if pai % 10 ~= 9 and pai % 10 ~= 1 then
paiNum = paiNum + 1
end
end
if paiNum == 14 then
isDuanYaoJiu = true
end
if #handpaisList == 14 then
isMenQing = true
end
return isDuanYaoJiu, isMenQing
end
-- 普通胡牌
function MJWinTableByCommon( handpaisList, gangPengList, winType )
if winType == 19 then
for pai, v in pairs( gangPengList ) do
if pai % 10 ~= 1 and pai % 10 ~= 9 then
return false
end
end
elseif winType == 258 then
for pai, v in pairs( gangPengList ) do
if pai % 10 ~= 2 and pai % 10 ~= 5 and pai % 10 ~= 8 then
return false
end
end
end
if #handpaisList == 2 then
do return handpaisList[ 1 ] == handpaisList[ 2 ] end
end
local genList= MJFindGen( handpaisList, winType )
if genList == nil then
return false
else
for num, paiList in pairs( genList ) do
local state = MJWinTableCommonCheckWin( paiList, winType )
if state == true then
return true
end
end
end
return false
end
function MJWinTableCommonCheckWin( paiList, winType )
local shunziList= MFFindShunZi( paiList, winType )
if shunziList == nil then
return false
else
for num, pailist in pairs( shunziList ) do
if #pailist == 0 then
return true
else
local state = MJWinTableCommonCheckWin( pailist, winType )
if state == true then
return true
end
end
end
end
end
-- genType: 1919根
-- genType: 258258根
function MJFindGen( handpaisList, genType )
local genList= {}
local haveGen= false
for index1 = 1, #handpaisList - 1 do
local findNum= handpaisList[ index1 ]
if genList[ findNum ] == nil then
for index2 = index1 + 1, #handpaisList do
if genType == 19 then
if handpaisList[ index2 ] == findNum and ( findNum % 10 == 1 or findNum % 10 == 9 ) then
genList[ findNum ]= Util.CloneTable( handpaisList )
table.remove( genList[ findNum ], index2 )
table.remove( genList[ findNum ], index1 )
haveGen= true
break
end
elseif genType == 258 then
if handpaisList[ index2 ] == findNum and ( findNum % 10 == 2 or findNum % 10 == 5 or findNum % 10 == 8 ) then
genList[ findNum ]= Util.CloneTable( handpaisList )
table.remove( genList[ findNum ], index2 )
table.remove( genList[ findNum ], index1 )
haveGen= true
break
end
else
if handpaisList[ index2 ] == findNum then
genList[ findNum ]= Util.CloneTable( handpaisList )
table.remove( genList[ findNum ], index2 )
table.remove( genList[ findNum ], index1 )
haveGen= true
break
end
end
end
end
end
if haveGen == true then
return genList
else
return nil
end
end
-- sType: 19 19顺子
-- sType: 258 258顺子
function MFFindShunZi( handpaisList, sType )
local shunziList= {}
local haveShunzi= false
for index, value in pairs( handpaisList ) do
if sType == 19 then
if ( value % 10 == 1 or value % 10 == 9 ) and shunziList[ value .. value .. value ] == nil then
local findList1= Util.TableFind( handpaisList, value )
if #findList1 >= 3 then
local sign = value .. value .. value
shunziList[ sign ]= Util.CloneTable( handpaisList )
table.remove( shunziList[ sign ], findList1[ 3 ] )
table.remove( shunziList[ sign ], findList1[ 2 ] )
table.remove( shunziList[ sign ], findList1[ 1 ] )
haveShunzi = true
end
end
if ( value % 10 == 1 or value % 10 == 7 ) and shunziList[ value .. value + 1 .. value + 2 ] == nil then
local findList1 = Util.TableFind( handpaisList, value + 1 )
if #findList1 ~= 0 then
local findList2 = Util.TableFind( handpaisList, value + 2 )
if #findList2 ~= 0 then
local sign = value .. value + 1 .. value + 2
shunziList[ sign ]= Util.CloneTable( handpaisList )
local sorList= { index, findList1[ 1 ], findList2[ 1 ] }
table.sort( sorList, MJPaiSort )
table.remove( shunziList[ sign ], sorList[ 3 ] )
table.remove( shunziList[ sign ], sorList[ 2 ] )
table.remove( shunziList[ sign ], sorList[ 1 ] )
haveShunzi = true
end
end
end
elseif sType == 258 then
if ( value % 10 == 2 or value % 10 == 5 or value % 10 == 8 ) and shunziList[ value .. value .. value ] == nil then
local findList1= Util.TableFind( handpaisList, value )
if #findList1 >= 3 then
local sign = value .. value .. value
shunziList[ sign ]= Util.CloneTable( handpaisList )
table.remove( shunziList[ sign ], findList1[ 3 ] )
table.remove( shunziList[ sign ], findList1[ 2 ] )
table.remove( shunziList[ sign ], findList1[ 1 ] )
haveShunzi = true
end
end
else
if shunziList[ value .. value .. value ] == nil or shunziList[ value .. value + 1 .. value + 2 ] == nil then
local findList1 = Util.TableFind( handpaisList, value + 1 )
if #findList1 ~= 0 then
local findList2 = Util.TableFind( handpaisList, value + 2 )
if #findList2 ~= 0 then
local sign = value .. value + 1 .. value + 2
shunziList[ sign ]= Util.CloneTable( handpaisList )
local sorList= { index, findList1[ 1 ], findList2[ 1 ] }
table.sort( sorList, MJPaiSort )
table.remove( shunziList[ sign ], sorList[ 3 ] )
table.remove( shunziList[ sign ], sorList[ 2 ] )
table.remove( shunziList[ sign ], sorList[ 1 ] )
haveShunzi = true
end
end
findList1= Util.TableFind( handpaisList, value )
if #findList1 >= 3 then
local sign = value .. value .. value
shunziList[ sign ]= Util.CloneTable( handpaisList )
table.remove( shunziList[ sign ], findList1[ 3 ] )
table.remove( shunziList[ sign ], findList1[ 2 ] )
table.remove( shunziList[ sign ], findList1[ 1 ] )
haveShunzi = true
end
end
end
end
if haveShunzi == true then
return shunziList
else
return nil
end
end
--七小对
function MJWinTableBySevenDouble( handpaisList )
if #handpaisList ~= 14 then
return
end
local doubleList = {}
local haveLong = false
for index = 1, 13, 2 do
if handpaisList[ index ] ~= handpaisList[ index + 1 ] then
return false
else
table.insert( doubleList, handpaisList[ index ] )
end
end
local beforenum= doubleList[ 1 ]
for index = 2, 7 do
if beforenum == doubleList[index] then
haveLong = true
break
else
beforenum = doubleList[index]
end
end
return true, haveLong
end
--清一色
function TableBySameColour( paisList )
if paisList[ 14 ] < 20 then
return true
elseif paisList[ 1 ] > 20 and paisList[ 14 ] < 30 then
return true
elseif paisList[ 1 ] > 30 and paisList[ 14 ] < 40 then
return true
end
return false
end
--对对胡
function TableByDuiDuiHu( paislist, gangPengList, gangNum )
if gangNum ~= 0 then
return false
end
local count3= 0
local count2= 0
local continuecount= 1
local beforenum= paislist[ 1 ]
for index = 2, #paislist do
if beforenum == paislist[ index ] then
continuecount= continuecount + 1
else
if continuecount == 2 then
count2= count2 + 1
elseif continuecount == 3 then
count3= count3 + 1
else
return false
end
continuecount= 1
beforenum= paislist[ index ]
end
end
if continuecount == 2 then
count2= count2 + 1
elseif continuecount == 3 then
count3= count3 + 1
end
if count2 == 1 and count3 + Util.GetTableLength( gangPengList ) == 4 then
return true
end
end
-- --排序
function MJPaiSort( pai1, pai2 )
return pai1 < pai2
end
Util类
-- 深度拷贝table, 基础数据类型没有问题( number, string, boolean, table ),其他的比如:(function 等等)不要挑战
local function cloneTable( vTable )
if type( vTable ) ~= "table" then
return nil;
end
local tClone = {}
for i, v in pairs( vTable ) do
if type( v ) == "table" then
tClone[ i ] = cloneTable( v )
else
tClone[ i ] = v
end
end
return tClone
end
-- 深度比对拷贝table, 基础数据类型没有问题( number, string, boolean, table ),其他的比如:(function 等等)不要挑战
local function compareTable( vSrcTable, vDesTable )
if type( vSrcTable ) ~= "table" then
return nil;
end
for i, v in pairs( vSrcTable ) do
if type( v ) == "table" then
if vDesTable[ i ] == nil then
vDesTable[ i ] = {}
end
compareTable( v, vDesTable[ i ] )
else
if vDesTable[ i ] == nil then
vDesTable[ i ] = v
end
end
end
end
local function printTable( vTable, vLevel )
local indent ="" -- i缩进,当前调用缩进
if vLevel == nil then
vLevel = 0
end
for i = 1, vLevel do
indent = indent.." "
end
local tHasElm = false
for k, v in pairs( vTable ) do
if tHasElm == false then
System.Log( indent.."{" )
tHasElm = true
end
if ( type( v ) == "table" ) then -- type(v) 当前类型时否table 如果是,则需要递归,
System.Log( indent.." " .. "[" .. k .. "]" )
printTable( v, vLevel + 1 )
else -- 否则直接输出当前值
System.Log( indent.." " .. "[" .. k .. "] = [" ..tostring( v ).."]" )
end
end
if tHasElm == true then
System.Log( indent.."}" )
end
end
local function splitString( text, split, len )
if len == nil then
len = 1
end
local textSet = {}
local startIndex = 0
local length = string.len( text )
while startIndex <= length do
local findSI, findEI = string.find( text, split, startIndex )
if findEI == nil then
findEI= length + len
end
local textItem = string.sub( text, startIndex, findEI - len )
table.insert( textSet, textItem )
startIndex = findEI + 1
end
return textSet
end
local base32 = {'0', '1', '2', '3', '4', '5','6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E',
'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'T', 'U', 'V', 'W', 'X', 'Y'}
local function str10Convert32( strnum )
local num = tonumber(strnum)
local numtb = {}
local ret = ""
if num > 0 then
while num > 0 do
numtb[#numtb + 1] = num %32
num = math.floor( num / 32)
end
for i = #numtb, 1, -1 do
ret = ret .. base32[numtb[i] + 1]
end
elseif num == 0 then
ret = "0"
else
num = math.abs(num)
while num > 0 do
numtb[#numtb + 1] = num %32
num = math.floor( num / 32)
end
ret = ret .. "-"
for i = #numtb, 1, -1 do
ret = ret .. base32[numtb[i] + 1]
end
end
return ret
end
-- 不区分大小写
local function str32Convert10( numStr )
assert(numStr, "can't be nil")
numStr = string.upper(numStr)
local ret = 0
local function findBase32Index( ch )
for k, v in pairs( base32 ) do
if v == ch then
return k
end
end
end
local pownum = 0
for i = #numStr, 1, -1 do
local temp = string.sub( numStr, i, i)
local index = findBase32Index( temp )
if not index then return end
ret = ret + (index-1)*math.pow(32, pownum)
pownum = pownum + 1
end
return tostring(ret)
end
local function formatNumber( num )
if num < 10000 then
return num
else
return math.floor( num / 10000 ) .. "万"
end
end
local function getStringCharCount( str )
local charCount = 0
local byteCount = 0
for i = 1, #str do
if byteCount > 1 then
byteCount = byteCount - 1
else
local curByte = string.byte( str, i )
if curByte > 0 and curByte <= 127 then
byteCount = 1
elseif curByte >= 192 and curByte < 224 then
byteCount = 2
elseif curByte >= 224 and curByte < 240 then
byteCount = 3
elseif curByte >= 240 and curByte < 248 then
byteCount = 4
elseif curByte >= 248 and curByte < 252 then
byteCount = 5
else
byteCount = 6
end
charCount = charCount + 1
end
end
return charCount
end
local function getStringCharArray( str )
local charArray= {}
local byteCount= 0
for index = 1, #str do
if byteCount > 1 then
byteCount = byteCount - 1
else
local curByte = string.byte( str, index )
if curByte > 0 and curByte <= 127 then
byteCount = 1
elseif curByte >= 192 and curByte < 224 then
byteCount = 2
elseif curByte >= 224 and curByte < 240 then
byteCount = 3
elseif curByte >= 240 and curByte < 248 then
byteCount = 4
elseif curByte >= 248 and curByte < 252 then
byteCount = 5
else
byteCount = 6
end
table.insert( charArray, string.sub( str, index, index + byteCount - 1 ) )
end
end
return charArray
end
local function getUserTableInfo( userTableInfo )
local tableInfo = splitString( userTableInfo, "_" )
if #tableInfo == 2 then
return tableInfo[ 1 ], tonumber( tableInfo[ 2 ] )
end
end
local function isInt( num )
return num == math.floor( num )
end
local function getTableLength( t )
local length= 0
for key, value in pairs( t ) do
length= length + 1
end
return length
end
local function dateToSecond( date )
local dateStr = Util.SplitString( date, "-" )
local time = os.time({year = "20"..dateStr[1], month = dateStr[2], day = dateStr[3]})
return time
end
local function getToday0ClockTime( )
local date= os.date( "*t" )
return os.time( { year = date.year, month = date.month, day = date.day, hour = 0, minute = 0, second = 0 } )
end
local function jsonGetValue( text, name )
local _, findEnd = string.find( text, [["]] .. name .. [[":]] )
if findEnd == nil then
System.Log( "findEnd " .. tostring( findEnd ) .. " " .. tostring( text ) .. " " .. tostring( name ) )
return nil
end
local startPos, endPos = string.find( text, ",", findEnd + 1 )
System.Log( "startPos " .. tostring( startPos ) )
if startPos == nil then
startPos, endPos = string.find( text, "}", findEnd + 1 )
end
System.Log( "startPos2 " .. tostring( startPos ) )
local valueDir = string.sub( text, findEnd + 1, startPos - 1 )
local tTextSet = splitString( valueDir, [["]] )
System.Log( "tTextSet[ 2 ] " .. tostring( tTextSet[ 2 ] ) )
return tTextSet[ 2 ] == nil and tTextSet[ 1 ] or tTextSet[ 2 ]
end
local function formatNumEx2( num )
num= num + 0.0001
if num >= 100000000 then
if math.floor( num / 10000000 ) / 10 == math.floor( num / 100000000 ) then
return math.floor( num / 100000000 ) .. "亿"
else
return math.floor( num / 10000000 ) / 10 .. "亿"
end
elseif num >= 10000 then
if math.floor( num / 1000 ) / 10 == math.floor( num / 10000 ) then
return math.floor( num / 10000 ) .. "万"
else
return math.floor( num / 1000 ) / 10 .. "万"
end
else
return math.floor( num )
end
end
function delTableKeys( vTable, vKeys )
local newTables= {}
for key, value in pairs( vTable ) do
if vKeys[ key ] == nil then
newTables[ key ]= value
end
end
return newTables
end
function keepTableKeys( vTable, vKeys )
local newTables= {}
for key, value in pairs( vTable ) do
if vKeys[ key ] ~= nil then
newTables[ key ]= value
end
end
return newTables
end
local function jsonObjToTable( jsonObj )
if jsonObj[ "_keys" ] ~= nil then
local objTable= {}
for index = 1, #jsonObj[ "_keys" ] do
local key= jsonObj[ "_keys" ][ index ]
local value= jsonObj[ "_values" ][ index ]
if type( value ) == "table" then
objTable[ key ]= jsonObjToTable( value )
else
objTable[ key ]= value
end
end
return objTable
end
end
local lJson = _G[ 'json' ]
local function jsonFKLJDecode( jsonStr )
if jsonStr ~= nil and type( jsonStr ) == "string" then
local jsonObj= lJson.decode( jsonStr, 1, nil )
local jsonTable = jsonObjToTable( jsonObj )
return jsonTable
end
end
local function jsonFKLJEncode( jsonObj )
if jsonObj ~= nil then
local jsonKeysStr= ""
local jsonValuesStr = ""
local spacePoint= ""
if type( jsonObj ) == "number" then
return jsonObj
elseif type( jsonObj ) == "string" then
return jsonObj
elseif type( jsonObj ) == "boolean" then
return jsonObj
end
if Util.GetTableLength( jsonObj ) == 0 then
return '{"_keys":[],"_values":[]}'
end
for key, value in pairs( jsonObj ) do
if type( key ) == "number" then
jsonKeysStr= jsonKeysStr .. ( jsonKeysStr == "" and '\"_keys\":[' .. spacePoint .. key or spacePoint .. key )
elseif type( key ) == "string" then
jsonKeysStr= jsonKeysStr .. ( jsonKeysStr == "" and '\"_keys\":[' .. spacePoint .. '\"' .. key .. '\"' or spacePoint .. '\"' .. key .. '\"' )
end
if type( value ) == "table" then
jsonValuesStr= jsonValuesStr .. ( jsonValuesStr == "" and '\"_values\":[' .. spacePoint .. jsonFKLJEncode( value ) or spacePoint .. jsonFKLJEncode( value ) )
else
if type( value ) == "number" then
jsonValuesStr= jsonValuesStr .. ( jsonValuesStr == "" and '\"_values\":[' .. spacePoint .. value or spacePoint .. value )
elseif type( value ) == "string" then
jsonValuesStr= jsonValuesStr .. ( jsonValuesStr == "" and '\"_values\":[' .. spacePoint .. '\"' .. value .. '\"' or spacePoint .. '\"' .. value .. '\"' )
elseif type( value ) == "boolean" then
jsonValuesStr= jsonValuesStr .. ( jsonValuesStr == "" and '\"_values\":[' .. spacePoint .. tostring( value ) or spacePoint .. tostring( value ) )
end
end
spacePoint= ","
end
return jsonKeysStr == "" and jsonKeysStr or "{" .. jsonKeysStr .. "]," .. jsonValuesStr .. "]}"
end
return ""
end
local lSQLBadStr = "sitename|net user|xp_cmdshell|and|exec|execute|insert|create|drop|" ..
"table|from|grant|use|group_concat|column_name|" ..
"information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|*|" ..
"chr|mid|master|truncate|char|declare|or|;|like|//|/|#"
local lSQLBadWords= {}
local function sqlCheck( str )
if #lSQLBadWords == 0 then
lSQLBadWords= Util.SplitString( lSQLBadStr, "|" )
end
local lowerStr= string.lower( str )
System.Log( "lowerStr " .. tostring( lowerStr ) )
for index = 1, #lSQLBadWords do
if string.find( lowerStr, lSQLBadWords[ index ] ) ~= nil then
System.Log( "lSQLBadWords[ index ] " .. " " .. tostring( lSQLBadWords[ index ] ) .. " " .. tostring( string.find( lowerStr, lSQLBadWords[ index ] ) ) )
return false
end
end
return true
end
local function removeTableValue( srcTable, delValue )
for key, value in pairs( srcTable ) do
if value == delValue then
table.remove( srcTable, key )
break
end
end
end
local function checkTableValueExist( srcTable, value )
for key, tableValue in pairs( srcTable ) do
if value == tableValue then
return true
end
end
return false
end
local function tableFind( srcTable, desValue )
local keyList= {}
for key, value in pairs( srcTable ) do
if value == desValue then
table.insert( keyList, key )
end
end
return keyList
end
Util= {
CloneTable= cloneTable,
CompareTable= compareTable,
PrintTable= printTable,
SplitString= splitString,
Str10Convert32= str10Convert32,
Str32Convert10= str32Convert10,
FormatNumber= formatNumber,
GetStringCharCount = getStringCharCount,
GetStringCharArray = getStringCharArray,
GetUserTableInfo = getUserTableInfo,
IsInt= isInt,
GetTableLength= getTableLength,
DateToSecond= dateToSecond,
GetToday0ClockTime= getToday0ClockTime,
JSONGetValue= jsonGetValue,
JSONGetTable= jsonGetTable,
FormatNumEx2 = formatNumEx2,
DelTableKeys= delTableKeys,
KeepTableKeys= keepTableKeys,
JSONFKLJDecode= jsonFKLJDecode,
JSONFKLJEncode= jsonFKLJEncode,
SQLCheck= sqlCheck,
RemoveTableValue = removeTableValue,
CheckTableValueExist= checkTableValueExist,
TableFind= tableFind,
}
C语言麻将递归,【算法SQL面试题】面试问题:麻将胡牌递归算… - 看准网相关推荐
- 优信拍集团php面试题_【优信拍PHP面试】一次不错的面试体验,面试官根据实际出发提问。-看准网...
投递了校招补录,由于自己的疏忽之前没有接电话,昨天好心的hr姐姐打电话临时给我安排到了最后一轮面试,赶过去,最后一组加我一共六人,大家简单认识了一下后先进行了第一轮群面,两个业务部面试官,可是我赶过来 ...
- 多线程可以使用计算机多核那,【多线程逻辑面试题】面试问题:异步操作的优缺… - 看准网...
我曾经提到异步操作能提高系统的吞吐能力,正确使用异步操作来校正滥用异步的错误做法,那异步究竟有何优点值得我们使用?而又有什么缺点需要我们使用的时候小心呢?诚如老赵所说, 异步并不一定能提高系统性能,甚 ...
- linux 内存 面试,【Linux内存面试题】面试问题:查看机器配置命… - 看准网
1.查看内存大小 solari:prtconf -vp | grep Mem linux :grep MemTotal /proc/meminfo 2.查看硬盘大小 solari:df -k linu ...
- python选择题题目_【Python测试面试题】面试问题:《我的Padd… - 看准网
目录 文章目录目录数据集介绍生成图像列表读取数据定义神经网络使用PaddlePaddle开始训练导入依赖包初始化Paddle获取参数创建训练器开始训练使用PaddlePaddle预测所有代码项目代码参 ...
- python面试题百度云下载_【百度Python面试题及回答技巧有哪些?】-看准网
百度,全球最大的中文搜索引擎.最大的中文网站.2000年1月创立于北京中关村. 1999年底,身在美国硅谷的李彦宏看到了中国互联网及中文搜索引擎服务的巨大发展潜力,抱着技术改变世界的梦想,他毅然辞掉硅 ...
- php小红书,【小红书逻辑PHP面试题】面试问题:PHP小红书文… - 看准网
/** * 爬虫逻辑 * 获取html内容 */ public function crawler($centent_url) { //https://www.xiaohongshu.com/disco ...
- linux链表概念,【链表Linux面试题】面试问题:进程的基本概念… - 看准网
一.背景 1.操作系统(Operator System)的概念: 任何计算机都包含一个基本的程序集合,称为操作系统(简称OS).笼统的理解,操作系统包括: 1)内核,其含有内核管理.进程管理.驱动管理 ...
- 百度linux c面试题,【百度百度糯米算法百度LinuxC语言数据面试题】面试问题:百度笔试题… - 看准网...
第一部分选择题: 有几道网络相关的题目,巨简单,比如第一题是TCP.RIP.IP.FTP中哪个协议是传输层的.......有一道linux的chown使用题目.其他的全是数据结构的题目!什么链,表,码 ...
- 啊哈c语言九九乘法表,【算法字符串面试题】面试问题:啊哈C!循环结… - 看准网...
13个经典案例: 程序分析在文档结尾处. 案例01.求1-100累计和 案例02.求10! 案例03.12个月的煤气费用 案例04.拓展:n! = 1 * 2 * 3 * -n 案例05.讨论:编写程 ...
最新文章
- Openoffice 安装与配置
- 软件测试培训适合什么人学习?
- 阿里某员工面试华为后吐槽:面试官太水,反问几句都答不上来
- Visual Studio Code之常备快捷键
- FUN ALV TOOLBAR 增加自定义按钮
- 初学js----------一些API
- 常见JSP中文乱码例子及其解决方法
- Android Studio 如何打JAR包
- 【Lucene4.8教程之中的一个】使用Lucene4.8进行索引及搜索的基本操作
- 使用webpack搭建个性化项目
- 树莓派能直接运行python程序_树莓派怎么运行python程序
- BootStrap笔记-按钮相关
- java checker_java 英文单词纠正校验框架(Word Checker)
- mfc mfc100ud.dll丢失问题
- phpstudy安装ssl证书_给网站安装免费SSL证书
- H.264标准(一)MP4封装格式详解
- 【浙大第19届校赛:B】Even Number Theory (数论n!中有多少个质因子2+java大数)
- Leetcode每日一题 面试题56 - I.数组中数字出现的次数
- Excel中DATEDIF函数的使用方法基础篇
- 2022建筑架子工(建筑特殊工种)考试练习题及在线模拟考试
热门文章
- 2、oracle全文检索
- GPS定位基本原理浅析
- Mac 更新系统后无法正常启动
- 安卓开发:WebView无法播放微信视频
- mysql存储图片node_Node.js教程 阿里云mysql如何支持存储emoji表情
- 原本在滴滴只负责批100万元以上开支的Leslie决定,ofo所有30万元以上的开支都要由她亲自过目。那段时间,他“天天晚上12点才下班,眼睛都熬红了”...
- 【渝粤教育】电大中专跨境电子商务理论与实务 (13)作业 题库
- 电脑卡修复计算机有用吗,电脑卡重装系统有用吗|电脑太卡可以重装系统解决吗...
- [Python]This probably means that Tcl wasn‘t installed properly.(Windows 10)(pyinstaller库)
- Android渐变遮罩