Ideone.com requires JavaScript to work.
fork download loading...
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int findFirst(int* nums, int length, int target)
  4. {
  5. if (nums == nullptr || length <= 0)
  6. return -1;
  7. int index = 0;
  8. while (index < length && nums[index] != target)
  9. {
  10. int delta = target - nums[index];
  11. index += abs(delta);
  12. }
  13. if (index < length)
  14. return index;
  15. return -1;
  16. }
  17. /************************* test code *****************************/
  18. bool isFirst(int* nums, int length, int target, int index)
  19. {
  20. for (int i = 0; i < index; ++i)
  21. {
  22. if (nums[i] == target)
  23. return false;
  24. }
  25. if (nums[index] == target)
  26. return true;
  27. return false;
  28. }
  29. void test(const char* testName, int* nums, int length, int target, bool isIn)
  30. {
  31. int result = findFirst(nums, length, target);
  32. if ((isIn && result >= 0 && isFirst(nums, length, target, result))
  33. || (!isIn && result < 0))
  34. {
  35. printf("%s passed. Result is %d. \n", testName, result);
  36. }
  37. else
  38. {
  39. printf("%s FAILED.\n", testName);
  40. }
  41. }
  42. void testGroup1()
  43. {
  44. int nums[] = { 4, 5, 6, 5, 6, 7, 8, 9, 10, 9 };
  45. test("test1_1", nums, sizeof(nums) / sizeof(int), 0, false);
  46. test("test1_2", nums, sizeof(nums) / sizeof(int), 1, false);
  47. test("test1_3", nums, sizeof(nums) / sizeof(int), 2, false);
  48. test("test1_4", nums, sizeof(nums) / sizeof(int), 3, false);
  49. test("test1_5", nums, sizeof(nums) / sizeof(int), 4, true);
  50. test("test1_6", nums, sizeof(nums) / sizeof(int), 5, true);
  51. test("test1_7", nums, sizeof(nums) / sizeof(int), 6, true);
  52. test("test1_8", nums, sizeof(nums) / sizeof(int), 7, true);
  53. test("test1_9", nums, sizeof(nums) / sizeof(int), 8, true);
  54. test("test1_10", nums, sizeof(nums) / sizeof(int), 9, true);
  55. test("test1_11", nums, sizeof(nums) / sizeof(int), 10, true);
  56. test("test1_12", nums, sizeof(nums) / sizeof(int), 11, false);
  57. }
  58. void testGroup2()
  59. {
  60. int nums[] = { 8, 7, 6, 7, 6, 5, 4, 3, 2, 3, 4, 3 };
  61. test("test2_1", nums, sizeof(nums) / sizeof(int), 0, false);
  62. test("test2_2", nums, sizeof(nums) / sizeof(int), 1, false);
  63. test("test2_3", nums, sizeof(nums) / sizeof(int), 2, true);
  64. test("test2_4", nums, sizeof(nums) / sizeof(int), 3, true);
  65. test("test2_5", nums, sizeof(nums) / sizeof(int), 4, true);
  66. test("test2_6", nums, sizeof(nums) / sizeof(int), 5, true);
  67. test("test2_7", nums, sizeof(nums) / sizeof(int), 6, true);
  68. test("test2_8", nums, sizeof(nums) / sizeof(int), 7, true);
  69. test("test2_9", nums, sizeof(nums) / sizeof(int), 8, true);
  70. test("test2_10", nums, sizeof(nums) / sizeof(int), 9, false);
  71. test("test2_11", nums, sizeof(nums) / sizeof(int), 10, false);
  72. test("test2_12", nums, sizeof(nums) / sizeof(int), 11, false);
  73. }
  74. void testGroup3()
  75. {
  76. int nums[] = { 6, 5, 4, 3, 4, 5, 6, 7, 8 };
  77. test("test3_1", nums, sizeof(nums) / sizeof(int), 0, false);
  78. test("test3_2", nums, sizeof(nums) / sizeof(int), 1, false);
  79. test("test3_3", nums, sizeof(nums) / sizeof(int), 2, false);
  80. test("test3_4", nums, sizeof(nums) / sizeof(int), 3, true);
  81. test("test3_5", nums, sizeof(nums) / sizeof(int), 4, true);
  82. test("test3_6", nums, sizeof(nums) / sizeof(int), 5, true);
  83. test("test3_7", nums, sizeof(nums) / sizeof(int), 6, true);
  84. test("test3_8", nums, sizeof(nums) / sizeof(int), 7, true);
  85. test("test3_9", nums, sizeof(nums) / sizeof(int), 8, true);
  86. test("test3_10", nums, sizeof(nums) / sizeof(int), 9, false);
  87. test("test3_11", nums, sizeof(nums) / sizeof(int), 10, false);
  88. test("test3_12", nums, sizeof(nums) / sizeof(int), 11, false);
  89. }
  90. int main()
  91. {
  92. testGroup1();
  93. testGroup2();
  94. testGroup3();
  95. }
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBmaW5kRmlyc3QoaW50KiBudW1zLCBpbnQgbGVuZ3RoLCBpbnQgdGFyZ2V0KQp7CiAgIGlmIChudW1zID09IG51bGxwdHIgfHwgbGVuZ3RoIDw9IDApCiAgICAgIHJldHVybiAtMTsKCiAgIGludCBpbmRleCA9IDA7CiAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCAmJiBudW1zW2luZGV4XSAhPSB0YXJnZXQpCiAgIHsKICAgICAgaW50IGRlbHRhID0gdGFyZ2V0IC0gbnVtc1tpbmRleF07CiAgICAgIGluZGV4ICs9IGFicyhkZWx0YSk7CiAgIH0KCiAgIGlmIChpbmRleCA8IGxlbmd0aCkKICAgICAgcmV0dXJuIGluZGV4OwoKICAgcmV0dXJuIC0xOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKiB0ZXN0IGNvZGUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmJvb2wgaXNGaXJzdChpbnQqIG51bXMsIGludCBsZW5ndGgsIGludCB0YXJnZXQsIGludCBpbmRleCkKewogICBmb3IgKGludCBpID0gMDsgaSA8IGluZGV4OyArK2kpCiAgIHsKICAgICAgaWYgKG51bXNbaV0gPT0gdGFyZ2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgIH0KCiAgIGlmIChudW1zW2luZGV4XSA9PSB0YXJnZXQpCiAgICAgIHJldHVybiB0cnVlOwoKICAgcmV0dXJuIGZhbHNlOwp9Cgp2b2lkIHRlc3QoY29uc3QgY2hhciogdGVzdE5hbWUsIGludCogbnVtcywgaW50IGxlbmd0aCwgaW50IHRhcmdldCwgYm9vbCBpc0luKQp7CiAgIGludCByZXN1bHQgPSBmaW5kRmlyc3QobnVtcywgbGVuZ3RoLCB0YXJnZXQpOwogICBpZiAoKGlzSW4gJiYgcmVzdWx0ID49IDAgJiYgaXNGaXJzdChudW1zLCBsZW5ndGgsIHRhcmdldCwgcmVzdWx0KSkKICAgICAgfHwgKCFpc0luICYmIHJlc3VsdCA8IDApKQogICB7CiAgICAgIHByaW50ZigiJXMgcGFzc2VkLiBSZXN1bHQgaXMgJWQuIFxuIiwgdGVzdE5hbWUsIHJlc3VsdCk7CiAgIH0KICAgZWxzZQogICB7CiAgICAgIHByaW50ZigiJXMgRkFJTEVELlxuIiwgdGVzdE5hbWUpOwogICB9Cn0KCnZvaWQgdGVzdEdyb3VwMSgpCnsKICAgaW50IG51bXNbXSA9IHsgNCwgNSwgNiwgNSwgNiwgNywgOCwgOSwgMTAsIDkgfTsKCiAgIHRlc3QoInRlc3QxXzEiLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgMCwgZmFsc2UpOwogICB0ZXN0KCJ0ZXN0MV8yIiwgbnVtcywgc2l6ZW9mKG51bXMpIC8gc2l6ZW9mKGludCksIDEsIGZhbHNlKTsKICAgdGVzdCgidGVzdDFfMyIsIG51bXMsIHNpemVvZihudW1zKSAvIHNpemVvZihpbnQpLCAyLCBmYWxzZSk7CiAgIHRlc3QoInRlc3QxXzQiLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgMywgZmFsc2UpOwogICB0ZXN0KCJ0ZXN0MV81IiwgbnVtcywgc2l6ZW9mKG51bXMpIC8gc2l6ZW9mKGludCksIDQsIHRydWUpOwogICB0ZXN0KCJ0ZXN0MV82IiwgbnVtcywgc2l6ZW9mKG51bXMpIC8gc2l6ZW9mKGludCksIDUsIHRydWUpOwogICB0ZXN0KCJ0ZXN0MV83IiwgbnVtcywgc2l6ZW9mKG51bXMpIC8gc2l6ZW9mKGludCksIDYsIHRydWUpOwogICB0ZXN0KCJ0ZXN0MV84IiwgbnVtcywgc2l6ZW9mKG51bXMpIC8gc2l6ZW9mKGludCksIDcsIHRydWUpOwogICB0ZXN0KCJ0ZXN0MV85IiwgbnVtcywgc2l6ZW9mKG51bXMpIC8gc2l6ZW9mKGludCksIDgsIHRydWUpOwogICB0ZXN0KCJ0ZXN0MV8xMCIsIG51bXMsIHNpemVvZihudW1zKSAvIHNpemVvZihpbnQpLCA5LCB0cnVlKTsKICAgdGVzdCgidGVzdDFfMTEiLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgMTAsIHRydWUpOwogICB0ZXN0KCJ0ZXN0MV8xMiIsIG51bXMsIHNpemVvZihudW1zKSAvIHNpemVvZihpbnQpLCAxMSwgZmFsc2UpOwp9Cgp2b2lkIHRlc3RHcm91cDIoKQp7CiAgIGludCBudW1zW10gPSB7IDgsIDcsIDYsIDcsIDYsIDUsIDQsIDMsIDIsIDMsIDQsIDMgfTsKCiAgIHRlc3QoInRlc3QyXzEiLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgMCwgZmFsc2UpOwogICB0ZXN0KCJ0ZXN0Ml8yIiwgbnVtcywgc2l6ZW9mKG51bXMpIC8gc2l6ZW9mKGludCksIDEsIGZhbHNlKTsKICAgdGVzdCgidGVzdDJfMyIsIG51bXMsIHNpemVvZihudW1zKSAvIHNpemVvZihpbnQpLCAyLCB0cnVlKTsKICAgdGVzdCgidGVzdDJfNCIsIG51bXMsIHNpemVvZihudW1zKSAvIHNpemVvZihpbnQpLCAzLCB0cnVlKTsKICAgdGVzdCgidGVzdDJfNSIsIG51bXMsIHNpemVvZihudW1zKSAvIHNpemVvZihpbnQpLCA0LCB0cnVlKTsKICAgdGVzdCgidGVzdDJfNiIsIG51bXMsIHNpemVvZihudW1zKSAvIHNpemVvZihpbnQpLCA1LCB0cnVlKTsKICAgdGVzdCgidGVzdDJfNyIsIG51bXMsIHNpemVvZihudW1zKSAvIHNpemVvZihpbnQpLCA2LCB0cnVlKTsKICAgdGVzdCgidGVzdDJfOCIsIG51bXMsIHNpemVvZihudW1zKSAvIHNpemVvZihpbnQpLCA3LCB0cnVlKTsKICAgdGVzdCgidGVzdDJfOSIsIG51bXMsIHNpemVvZihudW1zKSAvIHNpemVvZihpbnQpLCA4LCB0cnVlKTsKICAgdGVzdCgidGVzdDJfMTAiLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgOSwgZmFsc2UpOwogICB0ZXN0KCJ0ZXN0Ml8xMSIsIG51bXMsIHNpemVvZihudW1zKSAvIHNpemVvZihpbnQpLCAxMCwgZmFsc2UpOwogICB0ZXN0KCJ0ZXN0Ml8xMiIsIG51bXMsIHNpemVvZihudW1zKSAvIHNpemVvZihpbnQpLCAxMSwgZmFsc2UpOwp9Cgp2b2lkIHRlc3RHcm91cDMoKQp7CiAgIGludCBudW1zW10gPSB7IDYsIDUsIDQsIDMsIDQsIDUsIDYsIDcsIDggfTsKCiAgIHRlc3QoInRlc3QzXzEiLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgMCwgZmFsc2UpOwogICB0ZXN0KCJ0ZXN0M18yIiwgbnVtcywgc2l6ZW9mKG51bXMpIC8gc2l6ZW9mKGludCksIDEsIGZhbHNlKTsKICAgdGVzdCgidGVzdDNfMyIsIG51bXMsIHNpemVvZihudW1zKSAvIHNpemVvZihpbnQpLCAyLCBmYWxzZSk7CiAgIHRlc3QoInRlc3QzXzQiLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgMywgdHJ1ZSk7CiAgIHRlc3QoInRlc3QzXzUiLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgNCwgdHJ1ZSk7CiAgIHRlc3QoInRlc3QzXzYiLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgNSwgdHJ1ZSk7CiAgIHRlc3QoInRlc3QzXzciLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgNiwgdHJ1ZSk7CiAgIHRlc3QoInRlc3QzXzgiLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgNywgdHJ1ZSk7CiAgIHRlc3QoInRlc3QzXzkiLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgOCwgdHJ1ZSk7CiAgIHRlc3QoInRlc3QzXzEwIiwgbnVtcywgc2l6ZW9mKG51bXMpIC8gc2l6ZW9mKGludCksIDksIGZhbHNlKTsKICAgdGVzdCgidGVzdDNfMTEiLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgMTAsIGZhbHNlKTsKICAgdGVzdCgidGVzdDNfMTIiLCBudW1zLCBzaXplb2YobnVtcykgLyBzaXplb2YoaW50KSwgMTEsIGZhbHNlKTsKfQoKaW50IG1haW4oKQp7CiAgIHRlc3RHcm91cDEoKTsKICAgdGVzdEdyb3VwMigpOwogICB0ZXN0R3JvdXAzKCk7Cn0=
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
test1_1 passed. Result is -1. 
test1_2 passed. Result is -1. 
test1_3 passed. Result is -1. 
test1_4 passed. Result is -1. 
test1_5 passed. Result is 0. 
test1_6 passed. Result is 1. 
test1_7 passed. Result is 2. 
test1_8 passed. Result is 5. 
test1_9 passed. Result is 6. 
test1_10 passed. Result is 7. 
test1_11 passed. Result is 8. 
test1_12 passed. Result is -1. 
test2_1 passed. Result is -1. 
test2_2 passed. Result is -1. 
test2_3 passed. Result is 8. 
test2_4 passed. Result is 7. 
test2_5 passed. Result is 6. 
test2_6 passed. Result is 5. 
test2_7 passed. Result is 2. 
test2_8 passed. Result is 1. 
test2_9 passed. Result is 0. 
test2_10 passed. Result is -1. 
test2_11 passed. Result is -1. 
test2_12 passed. Result is -1. 
test3_1 passed. Result is -1. 
test3_2 passed. Result is -1. 
test3_3 passed. Result is -1. 
test3_4 passed. Result is 3. 
test3_5 passed. Result is 2. 
test3_6 passed. Result is 1. 
test3_7 passed. Result is 0. 
test3_8 passed. Result is 7. 
test3_9 passed. Result is 8. 
test3_10 passed. Result is -1. 
test3_11 passed. Result is -1. 
test3_12 passed. Result is -1. 
https://ideone.com/zuwjui
language:
C++14 (gcc 8.3)
created:
10 years ago
visibility:
public

Share or Embed source code

Discover > Sphere Engine API

The brand new service which powers Ideone!

Discover > IDE Widget

Widget for compiling and running the source code in a web browser!

AltStyle によって変換されたページ (->オリジナル) /