[綜合]無題 無名 ID:SUNpKCTg 17/09/08(五)20:38:33 No.9814606
評分:0, 年:0, 月:0, 週:0, 日:0, [+1 / -1] 最後更新:2017-09-08 08:52:49
http://rem.komica2.net/00/pixmicat.php?res=9811416
//------
[aa]
function rotationLeft(SourceArray,LeftMove){
var aryInt = SourceArray;
var intLength = aryInt.length;
var intMaxPoint = intLength - 1;
var intMove = LeftMove % intLength;
var intFirstChangePoint = 0;
//--------
var intIndex = 0;
//--
var intChangeTo = (intIndex+intMove);
do{
if(intFirstChangePoint == intIndex){
intFirstChangePoint = (intIndex+intMove);
}
Change(aryInt,intIndex,(intIndex+intMove));
intChangeTo++;
intIndex++;
}
while(intChangeTo < intLength);
//--
var intPointFixFisrt = intIndex;
var intPoint = 0+intFirstChangePoint;
do{
if(intPointFixFisrt == intIndex){
intPointFixFisrt = intPoint;
}
Change(aryInt,intIndex,intPoint);
if(intPoint == intMaxPoint){
intPoint = intPointFixFisrt;
}
else{
intPoint++;
}
intIndex++
}while(intIndex < intMaxPoint);
}
[/aa]
無題 無名 ID:SUNpKCTg 17/09/08(五)20:40:04 No.9814620
下班吃過晚餐後,整理一下回家前PO出的程式碼。
基本上因為懶得開新專案,就用JS直接寫了
[aa]
function Change(SourceArray,PointFrom,PointTo){
var temp = SourceArray[PointFrom];
SourceArray[PointFrom] = SourceArray[PointTo];
SourceArray[PointTo] = temp;
}
[/aa]
無題 無名 ID:gmLgFMY6 17/09/08(五)20:40:35 No.9814623
為...為什麼便這麼長....
無題 無名 ID:SUNpKCTg 17/09/08(五)20:41:03 No.9814627
接著這段是驗證的部分。
[aa]
function CheckMoveResult(arraySource, arrayCompare,intMove){
var result = true;
for(var index = 0 ; index < arraySource.length ; index++){
var intComparePoint = (index+intMove) % arraySource.length;
if(arraySource[intComparePoint] !== arrayCompare[index]){
result = false;
}
}
return result;
}
function BuildArray(size){
var result = [];
for(var index = 0 ; index < size ; index++){
result[index] = index+1;
}
return result;
}
for(var intArraySize = 1 ;intArraySize<100 ; intArraySize++){
var arrayError = [];
var arraySource = BuildArray(intArraySize);
var isOk = true;
for(var intMove = 1;intMove < arraySource.length ; intMove++){
var arrayInt = arraySource.slice();
rotationLeft(arrayInt,intMove);
isOk = isOk & CheckMoveResult(arraySource,arrayInt,intMove);
if(isOk == false){
arrayError.push(intMove);
}
}
if(isOk == false){
console.log("error size",intArraySize,"error move:",arrayError);
}
else{
console.log("size",intArraySize,"OK");
}
}
console.log("done");
[/aa]
無題 無名 ID:SUNpKCTg 17/09/08(五)20:44:05 No.9814656
總體跑起來的話,每次位移的總共迴圈處理次數是N-1。
至於為什麼變得那麼長?
因為這樣才豪丸阿!!!!!
無題 無名 ID:SUNpKCTg 17/09/08(五)20:46:52 No.9814677
然後補一下運行狀況
無題 無名 ID:SUNpKCTg 17/09/08(五)20:52:23 No.9814722
接著就是嗆人的部分了。
調整用不夠丸的寫法,跑出來根本就是炸的。
這只說明一件事情,就是你還不夠會丸!!
無題 無名 ID:SUNpKCTg 17/09/08(五)20:55:31 No.9814747
總之,我要說的事情其實很簡單,就是...
....
....
丸,乃丸,粗乃丸!!!!!
無題 無名 ID:dtUFoDPM 17/09/08(五)20:58:07 No.9814767 http://cpp.sh/9w7c
好久沒寫c++
這應該是bigO(n)沒錯吧
無題 無名 ID:BpHst6kw 17/09/08(五)21:03:28 No.9814809
戰力...有點弱
無題 無名 ID:SUNpKCTg 17/09/08(五)21:03:33 No.9814811 無題 無名 ID:HXkeQ9EM 17/09/08(五)21:05:49 No.9814833 無題 無名 ID:dtUFoDPM 17/09/08(五)21:08:14 No.9814859
無題 無名 ID:HDCDWxlc 17/09/08(五)21:09:06 No.9814865 三小啦
這個不是簡單到爆炸嗎
有需要開到兩串?
>>9814767如果我是教授我現在馬上把你當掉
無題 無名 ID:SUNpKCTg 17/09/08(五)21:10:43 No.9814876
無題 無名 ID:SUNpKCTg 17/09/08(五)21:11:19 No.9814883
無題 無名 ID:zEyDHDB. 17/09/08(五)21:11:26 No.9814884
無題 無名 ID:HXkeQ9EM 17/09/08(五)21:21:35 No.9814979 http://cpp.sh/86sb
無題 無名 ID:dtUFoDPM 17/09/08(五)21:25:23 No.9815005
c++就是好
怎麼亂搞都可以
哪像一些現代的腳本語言
稍微調戲一下就噴Exception
所以我開發都不用c++
無題 無名 ID:gmLgFMY6 17/09/08(五)21:31:55 No.9815057
無題 無名 ID:M39EOVT. 17/09/08(五)21:33:04 No.9815064
無本文
無題 無名 ID:HDCDWxlc 17/09/08(五)21:33:09 No.9815065 應該對吧
沒有編譯測試過
[aa]
int getGCD(int a,int b)
{
if(a%b==0)
return b;
return getGCD(b,a%b);
}
void leftRotate(int *arr,int arrLength,int rotateLength)
{
rotateLength%=arrLength;
if(rotateLength<0)
rotateLength+=arrLength;
if(rotateLength==0)
return;
int gcd=getGCD(arrLength,rotateLength);
for(int begin=0;begin<gcd;begin++)
{
int now=begin
int next=now+rotateLength;
int temp=arr[now];
while(next!=begin)
{
arr[now]=arr[next];
now=next;
next=(next+rotateLength)%arrLength;
}
arr[now]=temp;
}
}
[/aa]
>>9814979你戰勝了真理
無題 無名 ID:Od.rc76k 17/09/08(五)21:39:44 No.9815115 粗乃丸果然是智障
無題 無名 ID:SUNpKCTg 17/09/08(五)22:43:07 No.9815679 無題 無名 ID:HDCDWxlc 17/09/08(五)22:53:02 No.9815731 無題 無名 ID:gck3L6JE 17/09/08(五)22:53:40 No.9815735
無題 無名 ID:SUNpKCTg 17/09/08(五)23:03:02 No.9815800
無題 無名 ID:SUNpKCTg 17/09/08(五)23:08:07 No.9815843
無題 無名 ID:HXkeQ9EM 17/09/08(五)23:12:43 No.9815873 >>9815679一個很簡單的解決方法
你新增一個左移變數來紀錄上次的左移量
下次左移時只要加上"上次的左移量",就可以印出正確的左移量
這是我開始工作後的一點心得
東西在需要的時候出現就好
無題 無名 ID:SUNpKCTg 17/09/08(五)23:34:10 No.9816026