劍指offer之小試牛刀 No 1

2021-08-28 05:38:47 字數 1138 閱讀 3099

題目描述:小c有一張票,這張票的id是長度為6的字串,每個字元都是數字,他想讓這個id變為他的幸運id,所以他就開始更改id,每一次操作他可以選擇任意乙個數字並且替換它。

如果這個id的前三位數字之和等於都三位數字之和,那麼這個id就是幸運的。你幫小c求一下,最少需要操作幾次,能使id變為幸運id。

輸入:輸入只有一行,是乙個長度為6的字串。

輸出:輸出這個最小運算元。

問題思路:6位數可分為前三位為一組(簡稱第一組)和後三位為一組(簡稱第二組),前三位之和和後三位之和作差之後,如果為0,那就已經是乙個幸運id了,不需要更改。不相等就需要對其中一位進行操作,這時候有兩種操作策略,一種就是把小的那組數中的最小值變為9,另一種就是把大的那組數中的最大值調成0,因為這樣能最大限度的調整。如果調整之後,兩組數的大小關係改變,那麼就需要調整一次就可以變成幸運id啦。不行就改變兩者之中變化大的哪位,使之變成新的id,再次迭代操作,只到符合條件即可。

例如:id為「123456」,前三位和6,後三位和15,兩者相差9。進行一次操作,可以把「1」調成「9」,也可以把「6」調成「0」。因為1->9比6->0的變化幅度大,所以第一次操作選擇把id變為「923456」。改變之後發現還是第一組小於第二組,因此還需要調整。所以該id最少需要調整2次。

上**:

#include #include using namespace std;

static int countt = 0; //用來存放次數

void sort(int (&a)[6]);

int testt(int (&b)[6])

else

}else

else

}} else

else

}else

else

}} return 0;

}void sort(int (&c)[6]) //排序函式,使id每一組數分別從小到大排列,方便操作

int main()

sort(a);

if ((a[0] + a[1] + a[2])!=(a[3] + a[4] + a[5]))

else

system("pause");

return 0;

}

僅個人解析思路,歡迎各路大神提出改進!!!

1 小試牛刀 1

1.echo e 包含轉義序列的字串 2.彩色列印 文字 重置 0,黑 30,紅 31,綠 32,黃 33,藍 34,洋紅 35,青 36,白 37 背景 40,41,42,43,44,45,46,47 example 1 echo e e 1 31m zhangjing e 0m 紅字 2 ech...

小試牛刀之webpack dev server

模組熱替換 用express搭建過乙個小型的伺服器,用過監聽模式來解決手動npm run build的麻煩,這次使用webpack dev server來搭建乙個伺服器,且一併解決 手動編譯 手動重新整理瀏覽器 的麻煩。目錄 詳細 root div body html import from mat...

Puppeteer學習之小試牛刀

最近有了寫文章的動力了,一方面是受到了很多前輩們的啟示,另一方面也是為了記錄下來更好地學以致用。閒言少敘,先說說puppeteer是什麼。puppeteer是乙個node庫,提供了一些用來操作chrome的api,官網上介紹了一些實用的例子,可以先睹為快,第一步 環境配置 2.安裝完nodejs後,...