ITPub博客

首页 > 应用开发 > > C++ ,两个计算结果比较大小的问题

C++ ,两个计算结果比较大小的问题

作者:chinarocky 时间:2019-08-15 10:44:31 0 删除 编辑

我的代码如下,我是要在30行比较两个式子计算的结果,但是比较出来的结果是错误的,应该前半部分计算得出的是-2,后半部分是9,比较结果应该是错误的,不会进入这个if{}语句,但是仍然进入了。

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 class Solution {
 5 public:
 6     bool IsContinuous( vector<int> numbers ) {
 7         int luckyCount = 0;
 8         vector<int> tag;
 9         //tag.reserve(numbers.size());
10         int minNumber = 1<<30;
11         int maxNumber = 0;
12         for (int i = 0; i < numbers.size(); i++)
13         {
14                 if (numbers[i] == 0)
15                 {
16                     luckyCount++;
17                 } else if (numbers[i] < minNumber) {
18                     minNumber = numbers[i];
19                 } else if (numbers[i] > maxNumber) {
20                     maxNumber = numbers[i];
21                 }
22                 tag.push_back(0);
23         }
24 
25            cout<<maxNumber - minNumber + 1<<endl;
26         cout<<tag.size() + luckyCount<<endl;
27         int temp1 = maxNumber - minNumber + 1;
28         int temp2 = tag.size() + luckyCount;
29         cout<<(temp1 > temp2)<<endl;
30         if ((maxNumber - minNumber + 1) > (tag.size() + luckyCount))
31         {
32             cout<<"(maxNumber - minNumber + 1) > (tag.size() + luckyCount)"<<
33             ((maxNumber - minNumber + 1) > (tag.size() + luckyCount))<<endl; 
34             return false;
35         }
36         
37         for (int i = 0; i < numbers.size(); i++)
38         {
39             if (!(numbers[i] == 0))
40             {
41                 //numbers[i]可能是一个很大的数,超过了tag的size
42                 tag[numbers[i] - minNumber] = 1;
43             } 
44         }
45         for (int i = 0; i < tag.size();i++)
46         {
47             if (tag[i] == 0)
48             {
49                 luckyCount--;
50             }
51             if (luckyCount < 0)
52             {
53                 return false;
54             }
55         }
56         return true;
57     }
58 };
59 int main()
60 {
61     int array[] = {3,0,0,0,0};
62     vector<int> vec(array, array + sizeof(array)/sizeof(int));
63     cout<<Solution().IsContinuous(vec);
64     return 0;
65 }


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4547/viewspace-3161997/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-10

  • 博文量
    213
  • 访问量
    1690