[英]How to fix this bug in my MINGW for my C++ code?
我正在從 Codeforces 解決這個問題。 關聯
我使用 Sublime Text 3 作為我的代碼編輯器和 Mingw 作為我的編譯器。 當我使用我的 Mingw 編譯和運行代碼時,它給出了我的錯誤答案,而當我使用https://ideone.com/時,我的答案不同並且是正確的。
我的代碼
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(NULL);
int arr[4];
int ans = 0;
for (int i = 0; i < 4; ++i)
{
cin >> arr[i];
}
for (int i = 0; i < 4; ++i)
{
if (arr[i] == arr[i + 1] || arr[i] == arr[i + 2] || arr[i] == arr[i + 3]) {
ans++;
}
}
cout << ans;
}
Test-Case:1
INPUT:
4 4 4 4
MINGW OUTPUT:
4
IDEONE OUTPUT:
3
Test-Case:2
INPUT:
1 7 3 3
MINGW OUTPUT:
2
IDEONE OUTPUT:
1
在這個 for 循環中
for (int i = 0; i < 4; ++i)
{
if (arr[i] == arr[i + 1] || arr[i] == arr[i + 2] || arr[i] == arr[i + 3])
{
ans++;
}
}
在數組邊界之外有許多訪問。 所以程序有未定義的行為。
要解決這個問題,你應該 select 一個合適的容器來存儲輸入的值。
如果使用標准容器std::set
可以更簡單地解決任務。
這是一個演示程序。
#include <iostream>
#include <set>
int main()
{
const size_t N = 4;
std::set<unsigned int> set;
for ( size_t i = 0; i < N; i++ )
{
unsigned int value;
std::cin >> value;
set.insert( value );
}
std::cout << N - set.size() << '\n';
return 0;
}
例如,如果要輸入以下值序列
1 7 3 3
那么程序 output 將是
1
對於這個值序列
4 4 4 4
output 將是
3
如果要使用數組,那么程序可以如下所示。
#include <iostream>
int main()
{
const size_t N = 4;
unsigned int a[N];
for ( size_t i = 0; i < N; i++ )
{
std::cin >> a[i];
}
size_t ans = 0;
for ( size_t i = 1; i < N; i++)
{
size_t j = 0;
while ( j != i && a[j] != a[i] ) ++j;
if ( j != i ) ++ans;
}
std::cout << ans << '\n';
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.