يتم فرز أسئلة مسابقة برمجة Huawei التالية عبر الإنترنت ، ويتم تصحيح جميع الرموز بنفسك. نظرًا لوجود إجابات أقل على Java Online ، فإن الجميع مرحب بهم لانتقاد وتصحيح لي. آمل أيضًا أن يكون ذلك مفيدًا قليلاً لأحذية الأطفال التي تستعد لاستخدام Huawei على الكمبيوتر. يكبر خلال هذه الممارسة ، هيا! ~~
1.
وصف المشكلة:
نظرًا للعدد الكبير من الأشخاص في شركة معينة ، يتم تقسيم الغداء إلى مجموعات متعددة من الوجبات ، ووقت الوجبة مطلوب تمامًا لكل دفعة. والتحقق من وضع الطعام بانتظام. يرجى كتابة برنامج لتحقيق شيكات عشوائية على تناول الطعام.
مطلوب لتنفيذ الوظيفة:
void check_lunch (int num ، int int ، int inport [] ، int output [])
【المدخلات】 int num ، إجمالي عدد الأشخاص الذين يأكلون
الوقت ، عدد الوجبات على دفعات
إدخال char [] ، وضع الطعام
【الناتج】 إخراج char [] ، وضع الطعام غير القانوني
【العودة】 لا شيء
ملاحظة: بالنسبة للموقف الذي ينقسم فيه تناول الطعام إلى 3 دفعات ، يجب أن يتم توزيع 12 شخصًا ، على النحو التالي [1 ، 2 ، 3 ، 1 ، 2 ، 3 ، 1 ، 2 ، 3]. إذا لم يفي بهذا التوزيع ، فهو انتهاك ، والموقف المقابل هو 0 عند الإخراج.
مثال
1) المدخلات: num = 12 ، الوقت = 3 ، المدخلات = [1،2،3،3،1،3،1،1،1،1،2،3]
الإخراج: الإخراج = [1،2،3،0،0،3،1،0،0،1،2،3]
2) المدخلات: num = 11 ، الوقت = 4 ، Fitem = [1،2،3،4،2،3،3،4،1،2،3]
الإخراج: الإخراج = [1،2،3،4،0،0،3،4،1،2،3]
حزمة com.sheepmu.text ؛ استيراد java.util.arrays ؛ / * * author sheepmu */ public class hwcompetition {public static void main (string [] args) {int num = 11 ، time = 4 ؛ int [] input = {1،2،3،4،2،3،4،4،1،2،3} ؛ // int [] output = new int [] {} ؛ int [] output = new int [num] ؛ HwCompetition HWC = New HwCompetition () ؛ hwc.check_lunch (num ، الوقت ، الإدخال ، الإخراج) ؛ } void check_lunch (int num ، int int ، int input [] ، int output []) {system.out.println (arrays.toString (input)) ؛ int j = 0 ؛ لـ (int i = 0 ؛ i <num ؛ i ++) {int yushu = (i+1) time ؛ if (yushu! = 0) {if (input [i] == yushu) {output [j] = yushu ؛ } إخراج آخر [j] = 0 ؛ J ++ ؛ } آخر {// حالة الباقي == 0 if (input [i] == time) {output [j] = time ؛ } إخراج آخر [j] = 0 ؛ J ++ ؛ }} system.out.println (Arrays.ToString (Output)) ؛ }}2. أدخل لينوفو (30 نقطة)
وصف المشكلة:
إدخال وظيفة الارتباط هو وظيفة عملية للغاية ، يرجى البرمجة وتنفيذ وظائف مماثلة.
مطلوب لتنفيذ الوظيفة:
void auto_complete (char *str ، char *tmp ، char *output)
【الإدخال】 char *str ، سلسلة المرشح
Char *TMP ، سلسلة الإدخال
【الإخراج】 int *الإخراج ، سلسلة مطابقة للجمعية
【العودة】 لا شيء
ملاحظة: يتم فصل السلاسل المرشحة عن طريق المسافات ، وتتطابق سلسلة الإدخال فقط عن بداية السلسلة. إخراج Substrings المطابقة ، مفصولة أيضا المسافات. إذا لم يكن هناك فرعية تتطابق بنجاح ، فسيتم إخراج سلسلة فارغة.
مثال
1) المدخلات: str = chengdu chongqing ، tmp = c
الإخراج: الإخراج = تشنغدو تشونغتشينغ
2) المدخلات: str = chengdu chongqing ، tmp = che
الإخراج: نهاية = تشنغدو
3) المدخلات: str = beijing nanjing ، tmp = jing
الإخراج: نهاية =
الطريقة 1:
حزمة com.sheepmu.text ؛ استيراد java.util.arraylist ؛ استيراد java.util.list ؛ / * * author sheepmu */ public class hwcompetition {public static void main (string [] args) {String str = "chengdu chongqing" ؛ سلسلة tmp = "che" ؛ إخراج السلسلة = "" ؛ HwCompetition HWC = New HwCompetition () ؛ HWC.AUTO_COMPLETE (STR ، TMP ، الإخراج) ؛ } void auto_complete (String Str ، String TMP ، string output) {string [] strs = str.split ("// s") ؛ قائمة <Tring> list = new ArrayList <String> () ؛ لـ (int i = 0 ؛ i <Strs.length ؛ i ++) list.add (strs [i]) ؛ System.out.println ("List --->"+list) ؛ System.out.println ("TMP --->"+TMP) ؛ char [] tmps = tmp.tochararray () ؛ int len_list = list.size () ؛ int len_t = tmps.length ؛ لـ (int j = 0 ؛ j <len_list ؛ j ++) {int len_list_j = list.get (j) .length () ؛ char [] list_j = list.get (j). tochararray () ؛ لـ (int k = 0 ؛ k <len_t ؛ k ++) {if (len_t> len_list_j) {list.remove (j) ؛ len_list-؛ // !!!!!!!!!!!!!!! J-؛ // !!!!!!!!!!!!!!!!!!!!!!!! J-؛ // !!!!!!!!!!!!!!!!!!!!!!!!!!!! إذا لم تكن هذه هي الحالة ، فستكون هناك مشكلة ، لأنه بعد إزالة الحجم يصبح 1 ، ولكن J ، أي ، يصبح الفهرس 1 استراحة ؛ } آخر {// طول درجة الحرارة أصغر من طول الكبل إذا (tmps [k]! = list_j [k]) {list.remove (j) ؛ len_list-؛ // !!!!!!!!!!!!!!! J-؛ // !!!!!!!!! استراحة؛ }}}} // output = list.toString () ؛ // هذا سوف [chengdu] ، والذي سيكون [] if (! list.isempty ()) على كلا الجانبين {StringBuffer SB = new StringBuffer () ؛ sb.append ("end =") ؛ لـ (سلسلة السلسلة: قائمة) {sb.append (النتيجة+"") ؛ // إضافة مسافات! ! أخيرًا ، قم بإزالة "" الذيل ؛ } الإخراج = sb.toString (). trim () ؛ // !! } آخر {output = "end =" ؛ } system.out.println (الإخراج) ؛ }}الطريقة 2:
حزمة com.sheepmu.text ؛ استيراد java.util.arraylist ؛ استيراد java.util.list ؛ / * * author sheepmu */ public class hwcompetition {public static void main (string [] args) {String str = "chengdu chongqing" ؛ سلسلة tmp = "che" ؛ إخراج السلسلة = "" ؛ HwCompetition HWC = New HwCompetition () ؛ HWC.AUTO_COMPLETE (STR ، TMP ، الإخراج) ؛ } void auto_complete (String str ، String TMP ، string output) {string [] strs = str.split ("// s") ؛ // كما هو موضح أدناه ، يجب إضافته فقط باستخدام/s ،/d ، إلخ. list <string> list = new ArrayList <string> () ؛ لـ (int i = 0 ؛ i <Strs.length ؛ i ++) list.add (strs [i]) ؛ System.out.println ("List --->"+list) ؛ System.out.println ("TMP --->"+TMP) ؛ int len_list = list.size () ؛ لـ (int j = 0 ؛ j <len_list ؛ j ++) {// هناك طريقة جيدة أخرى:! list.get (j) .startswith (tmp) ؛ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! if (! list.get (j) .Matches (TMP+"[AZ]*")) {// التعبير العادي رائع !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! list.remove (j) ؛ len_list-- ؛ ي-؛ }} if (! list.isempty ()) {StringBuffer SB = new StringBuffer () ؛ sb.append ("end =") ؛ لـ (سلسلة السلسلة: قائمة) {sb.append (النتيجة+"") ؛ // إضافة مسافات! ! أخيرًا ، قم بإزالة "" الذيل ؛ } الإخراج = sb.toString (). trim () ؛ // !! } آخر {output = "end =" ؛ } system.out.println (الإخراج) ؛ }} 3. مشاكل عد المزرعة (20 نقطة)
وصف المشكلة:
من المعروف أن هناك مجموعة من الدجاج والأرانب في مزرعة معينة ، مع إجمالي رؤوس M والأقدام. حساب عدد الدجاج والأرانب الموجودة في المجموع.
مطلوب لتنفيذ الوظيفة:
السلسلة العامة getFowlsnum (int eheadnum ، int ifootnum ، arraylist ickennum ، arraylist irabbitnum)
【الإدخال】 eheadnum: إجمالي عدد الرؤوس
Ifootnum: عدد أقدام إجمالي [الإخراج] IChickennum: عدد الدجاج
Iroabbitnum: عدد الأرانب [عودة] "0": عدد الدجاج والأرانب التي تلبي المتطلبات
"-1": لم يتم العثور على كمية مطابقة للمتطلبات
مثال
المدخلات: eheadnum = 201 ، ifootnum = 604
الإخراج: ICHICKENNUM.ADD (100) ، irabbitnum.add (101) العودة: "0"
المدخلات: eheadnum = 201 ، ifootnum = 123
الإخراج: ICHICKENNUM.ADD (0) ، irabbitnum.add (0) العودة: "-1"
حزمة com.sheepmu.text ؛ استيراد java.util.arraylist ؛ / * * Author Seapmu */ public class hwcompetition {public static void main (string [] args) {int iheadnum = 201 ؛ int ifoOtnum = 604 ؛ ArrayList ichickennum = new ArrayList () ؛ ArrayList iRabbitnum = new ArrayList () ؛ HwCompetition HWC = New HwCompetition () ؛ hwc.getfowlsnum (Iheadnum ، ifootnum ، ickennum ، irabbitnum) ؛ } السلسلة العامة getFowlsNum (int iheadnum ، int ifootnum ، arraylist ichickennum ، arraylist irabbitnum) {if (ifootnum ٪ 2! = 0) {// !!! System.out.println ("IChickennum.Add (0) ، irabbitnum.add (0)") ؛ إرجاع "-1" ؛ // إذا كان عدد الأقدام غريبًا ، فمن الواضح أنه خطأ ،} آخر {int ji = 2*iheadnum-ifootnum/2 ؛ int tui = ifootnum/2- iheadnum ؛ if (ji> = 0 && tui> = 0) system.out.println ("ichickennum.add ("+ji+") ، irabbitnum.add ("+tui+")") ؛ العودة "0" ؛ }}} 4. ضغط السلسلة (30 نقطة)
وصف المشكلة:
ضغط السلسلة المحددة وفقًا للمواصفات وإخراج السلسلة المضغوطة. مواصفات الضغط هي: إذا كانت الشخصيات نفسها مستمرة ، فعليك ضغطها على "الحرف + رقم" ، مثل "AAAA" مضغوط إلى "A4"
ملاحظة: 1. يتم ضغط حرف واحد فقط بشكل مستمر ، إذا كان بابا ، لا يمكن ضغطه.
2. السلسلة المراد ضغطها لا تحتوي على أرقام وأحرف الهروب.
طريقة التنفيذ المطلوبة:
السلسلة العامة CompressStr (سلسلة SRCSTR) [إدخال] SRCSTR: السلسلة المراد ضغطها [الإخراج] لا شيء [إرجاع] مثال على الإدخال من السلسلة المضغوطة: srcStR = "AAACCCDDEF" الإرجاع: "A3C3D2EF"
الطريقة 1: (استخدم ArrayList) راجع Huawei Computer Summary السؤال 8
الطريقة 2: (إذا كنت تستخدم السلسلة ، يجب أن يكون أولئك الذين لا يمكن قراءتهم على النحو الوارد أعلاه على دراية بـ API)
حزمة com.sheepmu.text ؛ استيراد java.util.arraylist ؛ استيراد java.util.list ؛ / * * Author Seapmu */ public class hwcompetition {public static void main (string [] args) {string str = "abcddef" ؛ HwCompetition HWC = New HwCompetition () ؛ سلسلة السلسلة = hwc.compressStR (str) ؛ System.out.println (نتيجة) ؛ } السلسلة العامة CompressStr (String str) {StringBuffer SB = new StringBuffer () ؛ لـ (int i = 0 ؛ i <str.length () ؛ i ++) {if (str.length () == 0) break ؛ if (str.length () == 1) sb.append (str.charat (i)) ؛ // for aaAcccdDef for (int j = i+1 ؛ sb.append (str.length ()). append (str.charat (i)) ؛ str = str.substring (j) ؛ // الطول هو 0 فقط اليسار. يجب تعيين إلى str جديد !!!!!!!!!!!!!!!!!!!!!!!!!!!! استراحة؛ }} آخر {// if (j == 1) sb.append (str.charat (i)) ؛ آخر sb.append (j) .append (str.charat (i)) ؛ System.out.println (SB.ToString ()) ؛ str = str.substring (j) ؛ أنا--؛ استراحة؛ }}} return sb.toString () ؛ }} 5. خوارزمية الفرز (20 نقطة)
وصف المشكلة:
يتم فرز صفيف عدد صحيح غير مرتبة بترتيب تنازلي والمصفوفة غير المرتبة هي n والنوع غير موقّع
مطلوب لتنفيذ الوظائف
void dscsort (const int inpectarray [] ، int n n ، int outpray [])
【المدخلات】 inputArray: الصفيف غير المرتبة المعطى
N: طول الصفيف [الإخراج] OutputArray: Sort Array [Return] لا يوجد مثال على الإدخال: inputArray = {1،5،4،8،3،2،9،6،7،0}
الإخراج: OutputArray = {9،8،7،6،5،4،3،2،1،0}
الطريقة 1: (استدعاء مباشرة إلى API) الفكرة: ترتيب تصاعدي والإخراج بشكل عكسي
حزمة com.sheepmu.text ؛ استيراد java.util.arrays ؛ / * * author sheepmu */ public class hwcompetition {public static void main (string [] args) {int [] inputArray = {1،5،4،8،3،2،9،6،7،0} ؛ int n = inputArray.length ؛ int [] outputArray = new int [n] ؛ HwCompetition HWC = New HwCompetition () ؛ HWC.DSCSORT (InputArray ، N ، OutputArray) ؛ } void dscsort (int inputArray [] ، int n ، int outputArray []) {arrays.sort (inputArray) ؛ // corpending int i = 0 ؛ بينما (-n> = 0) {outputArray [i ++] = inputArray [n] ؛ } system.out.println (Arrays.ToString (outputArray)) ؛ }}الطريقة 2: (إذا كان السؤال ينص على أنه لا يمكن استدعاء واجهة برمجة التطبيقات)
حزمة com.sheepmu.text ؛ استيراد java.util.arrays ؛ / * * author sheepmu */ public class hwcompetition {public static void main (string [] args) {int [] inputArray = {1،5،4،8،3،2،9،6،7،0} ؛ int n = inputArray.length ؛ int [] outputArray = new int [n] ؛ HwCompetition HWC = New HwCompetition () ؛ HWC.DSCSORT (InputArray ، N ، OutputArray) ؛ System.out.println (Arrays.ToString (inputArray)) ؛ } void dscsort (int inputArray [] ، int n ، int outputArray []) {// اكتب نفسك: ترتيب سريع ينحدر int high = 0 ؛ int low = n-1 ؛ فرز (InputArray ، عالية ، منخفضة) ؛ } void sort (int inputArray [] ، int high ، int low) {int i ، j ، temp ؛ i = High ؛ // corpcript j = low ؛ // temprected low-end temp = inputArray [i] ؛ // الرجاء العنصر الأول كعنصر قياسي. بينما (i <j) {// ، يكون الخروج العودية منخفضًا = مرتفع بينما (i <j && temp> inputArray [j]) // الخلفية أصغر من درجة الحرارة وتتوافق مع الترتيب الهبوط. بغض النظر عن ذلك ، يتم نقل المنخفض المنخفض إلى الأمام J-؛ // بعد الانتهاء من ذلك ، يشير إلى درجة الحرارة الأكبر التي تكون أكبر من درجة الحرارة إذا (i <j) {inputArray [i] = inputArray [j] ؛ i ++ ؛ } بينما (i <j && temp <inputArray [i]) i ++ ؛ if (i <j) {inputArray [j] = inputArray [i] ؛ ي-؛ }} // بينما بعد ذلك ، أي أول قرص فرز الإدخال [i] = temp ؛ // ضع قيمة درجة الحرارة على موضعه. إذا (High <i) // لاحظ أن نوع القيمة التراكمي (inputArray ، High ، I-1) ؛ // عودية لمصفوفة المحطة اليسرى إذا (i <low) // لاحظ أن نوع القيمة التراجعية (inputArray ، i+1 ، low) ؛ // Reverive for the Terminal Array ؛ مقارنة المثال أعلاه ، في الواقع ، أنا و j هي نفس الكود التالي !!!!!!!!!!!!!!! }}6. ابحث عن أكبر رقم غير إعادة التثبيت (30 نقطة)
وصف المشكلة
إذا لم يكن هناك رقمين متتاليان في نفس التعبير العشري ، يطلق عليه "لا رقم تكرار". على سبيل المثال ، 105 و 1234 و 12121 كلها "لا توجد أرقام تكرار" ، في حين أن 11 و 100 و 1225 ليست كذلك. بالنظر إلى عدد صحيح إيجابي ، ارجع إلى أصغر "رقم التكرار" أكبر من A. A أقل من 100000
مطلوب لتنفيذ الوظائف
int getNotrepeatnum (int alivalue)
【المدخلات】 lvalue: يرجع الرقم المحدد إلى الحد الأدنى للرقم غير المتكرر أكبر من القيمة [الإخراج] لا شيء [إرجاع] الحد الأدنى لعدد غير متكرر أكبر من إدخال مثال Ivalue: Ivalue = 54
العودة: 56
المدخلات: alivalue = 10
العودة: 12
المدخلات: alivalue = 98
العودة: 101
المدخلات: Ivalue = 21099
العودة: 21201
حزمة com.sheepmu.text ؛ استيراد java.util.arrays ؛ استيراد java.util.scanner ؛ / * * Author Seapmu */ public class hwcompetition {public static void main (string [] args) {scanner input = new scanner (system.in) ؛ int a = input.nextint () ؛ system.out.println ("رقم الإدخال هو ---->"+a) ؛ HwCompetition HWC = New HwCompetition () ؛ int النتيجة = hwc.getNotRepeAtnum (a) ؛ System.out.println ("إرجاع الحد الأدنى للرقم غير المتكرر أكبر من"+A+"---->"+نتيجة) ؛ } int getNotRepeAtnum (int alivalue) {int i = 0 ؛ لـ (i = alivalue+1 ؛ i <100000 ؛ i ++) {if (! isRepeatnum (i)) {break ؛ // !!! خلاف ذلك ، سيتم تشغيله عدة مرات عبثا}} إرجاع I ؛ } isrepeatnum boolean العامة (int a) {string str = a+"" ؛ char [] cs = str.tochararray () ؛ int len = cs.length ؛ لـ (int i = 0 ؛ i <len-1 ؛ i ++) {// لأن i+1 مطلوب لاحقًا ، إذا كان i <len ، فيجب عليك أن تعبر الحدود. إذا (cs [i] == cs [i+1]) إرجاع صحيح ؛ } إرجاع خطأ ؛ }} 7. مقارنة بطاقة اللعب (30 نقطة)
وصف المشكلة:
في لعبة البوكر ، تشمل أنواع البطاقات: A (1) ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9 ، T (10) ، J (11) ، Q (12) ، K (13) ، D (Devilkin) ، B (Belial).
يرجى إنشاء برنامج بسيط ، وإدخال شخصيات بطاقتين ، مثل "2" و "K" ، والحكم على حجم البطاقة. القواعد كما يلي:
B> d> 2> a> k> q> j> 10 ....> 3 الأصغر هو 3
قواعد الحكم: قارن cfirstcard و csecondcard. إذا كان FirstCar كبيرًا ، فالتراجع 1 ؛ إذا كان الشيء نفسه ، العودة 0 ؛ إذا كان أولد سيارات صغيرة ، فالتراجع -1.
مطلوب لتنفيذ الوظيفة:
int careonecard (Char Cfirstcard ، Char Csecondcard)
【الإدخال】 char cfirstcard: البطاقة الأولى التي يجب مقارنتها
Csecondcard char: البطاقة الثانية التي يجب مقارنتها ملاحظة: الإدخال هو الأحرف "A" ، "2" ، ... ، "9" ، "T" ، "J" ، "Q" ، "K" ، "D" ، "B"
[Return] int type: Return the Propertons for اثنين. ملاحظة: إن قانونية الإدخال ليست ضرورية ، وهذا مضمون من قبل مستخدم الوظيفة. البطاقات التي تم إدخالها هي كل الأحرف "1" ، "2" ... "9" ، رأس المال "،" T "،" J "،" Q "،" K "،" D "،" B ".
على سبيل المثال:
أدخل: "4" ، "5" ، العودة: -1
أدخل: "6" ، "6" ، العودة: 0
حزمة com.sheepmu.text ؛ / * * author sheepmu */ public class hwcompetition {public static void main (string [] args) {char cfirstcard = '5' ؛ char csecondcard = '6' ؛ HwCompetition HWC = New HwCompetition () ؛ int النتيجة = hwc.compareonecard (cfirstcard ، csecondcard) ؛ System.out.println ("نتيجة المقارنة"+نتيجة) ؛ } int careOnecard (char cfirstcard ، char csecondcard) {int if = getRealln (cfirstcard) ؛ System.out.println ("if --->"+ if) ؛ int هو = getRealln (csecondcard) ؛ System.out.println ("IS --->"+ IS) ؛ العودة إذا كان>؟ 1: إذا <هل؟ -1: 0 ؛ // لا حاجة لإضافة قوسين} int getRealln (char c) {int value = 0 ؛ Switch (c) {case 't': value = 10 ؛ استراحة؛ الحالة 'j': القيمة = 11 ؛ استراحة؛ حالة 'Q': value = 12 ؛ استراحة؛ حالة 'k': القيمة = 13 ؛ استراحة؛ حالة 'a': القيمة = 14 ؛ استراحة؛ الحالة "2": القيمة = 15 ؛ استراحة؛ حالة 'd': القيمة = 16 ؛ استراحة؛ الحالة 'b': القيمة = 17 ؛ استراحة؛ الحالة "3": الحالة "4": الحالة "5": الحالة "6": الحالة "7": الحالة "8": الحالة "9": // value = c ؛ // خطأ فائق غبي !!! إذا أدخلت 9 ، '9' = 57 !!! قيمة الحرف 9 ليست الرقم 9 ولكن قيمة الحرف نفسها. القيمة = integer.parseint (C+"") ؛ استراحة؛ } قيمة الإرجاع ؛ }} 8. لمحات (30 نقطة)
وصف المشكلة:
في Chengdu ، تسمى لعبة البوكر الشهيرة "جافة التحديق". يتم استخدام أوراق اللعب ، بما في ذلك: A (1) ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9 ، T (10) ، J (11) ، Q (12) ، K (13).
ملاحظة: يتم استبدال 10 بـ T ، ولا يتم النظر في الأشباح الكبيرة والأشباح الصغيرة هنا في الوقت الحالي.
قواعد الحجم للبطاقات ثنائية اليدين هي كما يلي:
أ) بطاقة واحدة: من 4 إلى 3 ، 5 إلى 4 ، وفقط عندما تكون البطاقتان أكبر قليلاً ، يمكنك المقارنة. ترتيب المقارنة هو: a> k> q> j> t> 9> 8> 7> 6> 5> 4> 3.
على سبيل المثال: 6 أكبر من 5 ، ولكن لا يمكن أن يكون أكبر من 4 ، ولا يمكن مقارنة 6 و 4. Single Card 2 عبارة عن بطاقة خاصة يمكن مقارنتها بجميع البطاقات الفردية العادية الأخرى وهي الأكبر.
يرجى ملاحظة أن 3 ، لا يمكن أن يكون أكبر من أي بطاقة.
ب) الزوج: أي نقاط البطاقتين هي نفسها ، والقواعد تشبه تلك الموجودة في بطاقة واحدة ، كما أن المعالجة المماثلة مطلوبة أيضًا. اثنان 2 أزواج خاصة ويمكن أن تكون أكبر من جميع الأزواج الأخرى.
ملاحظة: لا يمكنك مقارنة البطاقات الفرعية والفردية.
ج) قنبلة: 3 بطاقات مع نفس عدد النقاط. يمكن أن تكون القنبلة أكبر من أي بطاقة وزوج واحد. لا تحتاج المقارنة بين القنابل إلى أن تكون مثل بطاقة واحدة وزوج. يمكن أن تكون أكبر للمقارنة.
طالما تم استيفاء القواعد: 222> AAA> KKK> QQ> JJJ> TT> ...> 333. وهذا هو ، 222 هو الأكبر ، يمكن أن تكون AAA أكبر من KKK أو 333.
د) لا يتم النظر في القواعد الأخرى للتنفيذ. الآن يرجى تطبيق برنامج لتحديد حجم البطاقات في كلتا يديه تلقائيًا. ملاحظة: ستظهر البطاقات التي تم إدخالها فقط في ثلاثة أنواع: واحدة وزوج وقنبلة. الحد الأقصى لعدد الصور هو 3.
لن تكون هناك بطاقتين واحد. على سبيل المثال ، "25" ، لن يكون هناك أي زوج بالإضافة إلى بطاقة واحدة ، مثل "334" ، إلخ. لا تحتاج إلى النظر في استثناءات مدخلات مماثلة.
ومع ذلك ، فإن PfirstCards عبارة عن بطاقة واحدة و psecondcards هي زوج ، ومدخلات مزيج مماثلة قانونية.
مطلوب لتنفيذ الوظيفة:
int المقارنات (char *pfirstcards ، char *psecondcards)
【الإدخال】 char *pfirstcards: البطاقات المباشرة التي يجب مقارنتها
بطاقات psecondcards char: من جهة مستعملة يجب مقارنتها
إذا كان لا يمكن مقارنة بطاقات pfirstcards و psecondcards ، مثل "3" و "6" ؛ "55" و "6" ، وما إلى ذلك ، إرجاع 0.
إذا كانت بطاقات pfirstcards أكبر من بطاقات psecondcards ، فالتراجع 1.
إذا كانت بطاقات PFIRSTCards تساوي بطاقات psecondcards ، فالتراجع 2.
إذا كانت بطاقات PFIRSTCards أقل من بطاقات psecondcards ، فالتراجع 3.
ملاحظة: إن مشروعية الإدخال ليست ضرورية ، ويضمن ذلك مستخدم الوظيفة. البطاقات التي تم إدخالها هي كل الأحرف "1" ، "2" .. "9" ، رأس المال "،" T "،" J "،" Q "،" K ".
مثال على الإدخال: "77" ، "33" ، العودة: 0
أدخل: "77" ، "77" ، العودة: 2
الأفكار: 1.
2. 1VS1 أو 2 VS2 بنفس الطريقة للمقارنة
3. طرق مقارنة مختلفة من 3VS3 والحالة 2
4. 3 مقابل غير 3 أو غير 3 VS3
حزمة com.sheepmu.text ؛ استيراد java.util.arrays ؛ / * * author seapmu */ public class hwcompetition {public static void main (string [] args) {String pfirstCards = "qq" ؛ سلسلة psecondcards = "444" ؛ HwCompetition HWC = New HwCompetition () ؛ int النتيجة = hwc.comparecards (pfirstcards ، psecondcards) ؛ System.out.println ("نتيجة المقارنة"+نتيجة) ؛ } int المقارنات (سلسلة pfirstcards ، string psecondcards) {int len1 = pfirstcards.length () ؛ int len2 = psecondcards.length () ؛ إذا ((len1 == 1 && len2 == 2) || (len1 == 2 && len2 == 1)) // 1vs2 ، لا يمكن مقارنة. من أجل توفير الكفاءة ، ستتم القيام أولاً ، لذلك ليست هناك حاجة لتنفيذ الموقف التالي. العودة 0 ؛ int [] is1 = getRealLns (pfirstcards) ؛ int [] is2 = getRealLns (psecondcards) ؛ // system.out.println (Arrays.ToString (IS1)) ؛ // [12 ، 12] // system.out.println (arrays.toString (IS2)) ؛ // [4 ، 4 ، 4] {(len1 == 1 && len2 == 1) نفس. في الواقع ، ليست هناك حاجة إلى قوسين إذا (Math.ABS (IS1 [0] -is2 [0]) == 1) // أعرف أن الطول 2 بالتأكيد هو زوج من الحالات إرجاع IS1 [0] -is2 [0]> 0؟ 1: 3 ؛ وإلا إذا (IS1 [0] == IS2 [0]) return 2 ؛ عودة أخرى 0 ؛ } if (len1 == 3 && len2 == 3) // لا يمكن أن تكون القنبلة متساوية ، لأنه لا توجد 6 بطاقات متطابقة في سطح السفينة. إرجاع IS1 [0]> IS1 [0]؟ 1: 3 ؛ if (len1 == 3 && len2 <3 || len1 <3 && len2 == 3) return len1 == 3؟ 1: 3 ؛ إرجاع 0 ؛ // في الواقع ، يجب ألا تنفذ حالات الاختبار هذه الجملة أبدًا. } int [] getRealLns (string s) {int len = s.length () ؛ int [] cs = new int [len] ؛ لـ (int i = 0 ؛ i <len ؛ i ++) {cs [i] = getRealln (s.charat (i)) ؛ } إرجاع CS ؛ } int getRealln (char c) {int value = 0 ؛ Switch (c) {case 't': value = 10 ؛ استراحة؛ الحالة 'j': القيمة = 11 ؛ استراحة؛ حالة 'Q': value = 12 ؛ استراحة؛ حالة 'k': القيمة = 13 ؛ استراحة؛ حالة 'a': القيمة = 14 ؛ استراحة؛ الحالة "2": القيمة = 15 ؛ استراحة؛ الحالة "3": الحالة "4": الحالة "5": الحالة "6": الحالة "7": الحالة "8": الحالة "9": // value = c ؛ // خطأ فائق غبي !!! إذا أدخلت 9 ، '9' = 57 !!! قيمة الحرف 9 ليست الرقم 9 ولكن قيمة الحرف نفسها. القيمة = integer.parseint (C+"") ؛ استراحة؛ } قيمة الإرجاع ؛ }} 9. Matrix Transpose (20 نقطة)
وصف المشكلة:
مبادلة صفوف من مصفوفة n*n. ・
مطلوب لتنفيذ الوظيفة:
السلسلة العامة MatrixTranspose (سلسلة Inarr ، int n)
【الإدخال】 inarr: مصفوفة حرف الإدخال
N: عدد صفوف مصفوفة n*n [return] مصفوفة الأحرف المنقولة ملاحظة:
مصفوفة المدخلات والمخرجات هي صفائف ثنائية الأبعاد مخزنة في شكل أحادي البعد. على سبيل المثال ، المدخلات هي "1،2،3،4،5،6،7،8،9" ، والتي تمثل بالفعل المصفوفة 3*3 التالية:
1،2،3،4،5،6،7،8،9
مثال على الإدخال inarr = "1،2،3،4،5،6،7،8،9" ، n = 3 عوائد: "1،4،7،5،8،3،6،9"
ملاحظة: أضاف المؤلف العنوان بشكل مصطنع إلى سلسلة بدلاً من حرف. الشخصيات أبسط. انتبه لاعتراض السلاسل. 13 ليس 1،3
الطريقة 1: تم استخدام المصفوفة من قبل السؤال. فقط فكر في الأمر على أنه على دراية بالمصفوفة ثنائية الأبعاد
حزمة com.sheepmu.text ؛ استيراد java.util.arrays ؛ ] int n = 4 ؛ system.out.println ("inarr --->"+inarr) ؛ hwcompetition hw = new hwcompetition () ؛ النتيجة سلسلة = hw.matrixTranspose (Inarr ، n) ؛ system.out.println ("result ---->"+result) ؛ } السلسلة العامة MatrixTranspose (String Inarr ، int n) {// قم بإزالة الفاصلة في السلسلة ، وإلا فإن الفاصلة ستكون قيمة فرعية للسلسلة. عند الإخراج ، أضفه سلسلة [] ss = inarr.split ("،") ؛ سلسلة [] [] css = سلسلة جديدة [n] [n] ؛ int k = 0 ؛ لـ (int i = 0 ؛ i <n ؛ i ++) {// قم بتحويل السلسلة إلى صفيف ثنائي الأبعاد لـ (int j = 0 ؛ j <n ؛ j ++) {css [i] [j] = ss [k] ؛ K ++ ؛ }} StringBuffer SB = new StringBuffer () ؛ لـ (int i = 0 ؛ i <n ؛ i ++) {// 2d Array Arverse for (int j = 0 ؛ j <n ؛ j ++) {sb.append (css [j] }} الطريقة 2: أبسط ، لا مصفوفة مطلوبة على الإطلاق.
حزمة com.sheepmu.text ؛ استيراد java.util.arrays ؛ ] int n = 4 ؛ system.out.println ("inarr --->"+inarr) ؛ hwcompetition hw = new hwcompetition () ؛ النتيجة سلسلة = hw.matrixTranspose (Inarr ، n) ؛ system.out.println ("result ---->"+result) ؛ } السلسلة العامة MatrixTranspose (String Inarr ، int n) {// قم بإزالة الفاصلة في السلسلة ، وإلا فإن الفاصلة ستكون أيضًا قيمة فردية للسلسلة. عند الإخراج ، أضفه سلسلة [] ss = inarr.split ("،") ؛ StringBuffer SB = New StringBuffer () ؛ لـ (int i = 0 ؛ i <n ؛ i ++) {// for the Question مثال: ترتيب التراجع المطلوب هو 036147258 لـ (int j = i ؛ j <ss.length ؛ j+= n) {sb.append (ss [j]+"،") فاصلة}} 10. أضواء الشوارع (20 نقطة)
الشوارع في العاصمة الإقليمية متموجة. من أجل مراقبة تشغيل مصابيح الشوارع ، يستخدم كل شارع سلسلة رقمية لتحديد تشغيل جميع مصابيح الشوارع في الشارع.
افترض أن ضوء الشارع ليس له سوى الحالات الثلاث التالية (التي حددتها الأرقام 0 ، 1 ، 2 ، على التوالي ، ويتوافق ضوء الشارع فقط مع إحدى الولايات):
0 علامة شارع ضوء الشارع خارج.
1 يتم تشغيل ضوء الشارع ؛
2 تحديد فشل ضوء الشارع ؛
يرجى العثور على الحد الأقصى لعدد مصابيح الشوارع المتتالية في نفس الولاية في الشارع بناءً على السلسلة التي تم إدخالها. إذا كان عدد مصابيح الشوارع في كلتا الحالتين هو نفسه ، فسيتم إرجاع حالة Light Street الأولى.
أدخل سلسلة الدولة المكونة من أضواء الشوارع المستمرة في الشارع. تحتوي السلسلة على أرقام فقط ، وحالة كل ضوء شارع هي واحدة من 0 و 1 و 2. على سبيل المثال ، "1101" يمثل 4 أضواء في الشوارع ، ويكون ضوء الشارع الثالث في حالة الخروج ، والآخر 3 في حالة ON.
الحد الأقصى لعدد مصابيح الشوارع التي تقع باستمرار في نفس الحالة هو الإخراج ؛
حالة أضواء الشوارع أعلاه ؛
المتطلبات: أول إخراج الكمية ، ثم إخراج الحالة ، واستخدم فاصل فضاء بين الأعداد الصحيحة. على سبيل المثال الإخراج:
53 2
عينة المدخلات
112200111
عينة الإخراج
3 1
حزمة com.sheepmu.text ؛ استيراد java.util.arrays ؛ / * * Author Sheepmu */Public Class HwCompetition {public static void main (string [] args) {String s = "112001110" ؛ System.out.println ("inarr --->"+s) ؛ hwcompetition hw = new hwcompetition () ؛ النتيجة سلسلة = hw.ludeng (s) ؛ System.out.println ("نتيجة السؤال ---->"+نتيجة) ؛ } السلسلة العامة Ludeng (سلسلة S) {// قم بإزالة الفاصلة في السلسلة ، وإلا فإن الفاصلة هي أيضًا قيمة فردية للسلسلة. عند الإخراج ، أضفه char [] as = s.toChararray () ؛ int len = as.length ؛ int maxc = 1 ؛ // int mubiaObindex = 0 ؛ // لا تنشئ متغيرات إضافية // int mubiaovalue = as [0] ؛ int bindex = 0 ؛ // إذا كنت بحاجة إلى إرجاع أكبر مجموعة متتالية على التوالي ، ثم 6 في هذا الوقت ؛ إذا كان السؤال يحتوي على هذا المطلب: ثم قم بتعيين متغيرين: عدد المرات "لكل جزء" + المركز الأول الذي يظهر. قيمة char = كـ [0] ؛ // إذا احتاج السؤال إلى إرجاع قيمة الجزء الأقصى للطول ، أي 1 من حالة هذا السؤال لـ (int i = 0 ؛ i <len-1 ؛) {int count = 1 ؛ // كل حلقة خارجية هي تعيين العد على 1 ، وبدء عدد جديد من bindex = i ؛ القيمة = كـ [i] ؛ لـ (int j = i+1 ؛ j <len ؛ j ++) {if (as [i]! = as [j]) {i = j ؛ استراحة؛ } آخر {i ++ ؛ // !!!!!!!!!!!! إذا لم يظهر أي مختلف بعد ذلك ؛ إذا لم تتم إضافة هذه الجملة ، فسيتم تنفيذ الحلقة الخارجية طوال الوقت. count ++ ؛ }} if (count> maxc) {maxc = count ؛ // mubiaObindex = bindex ؛ // mubiaovalue = value ؛ System.out.println ("maxc --->"+maxc+"STARRENCE SURCERSS ---->"+bindex+"status ---->"+value) ؛ }} StringBuffer SB = new StringBuffer () ؛ return sb.append (maxc+"") .Append (value) .ToString () ؛ }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.