当我尝试在Dev-C ++中运行此代码时。没有输出。但是,当我在任何在线编译器中运行它时,代码都可以平稳运行。为什么它不能在Dev-C ++中运行?
我已经尝试在各种在线编译器中运行它,并且运行顺利。
import tkinter as tk
def print_name(text=''): # <- now receives a value as parameter
print(text)
def main():
main_window = tk.Tk()
entry_location = tk.Entry(main_window)
tk.Button(main_window, text="Print Name", command=lambda: print_name(entry_location.get())).pack()
entry_location.pack()
main_window.mainloop()
main()
答案 0 :(得分:3)
让我们看一下这段代码:
long long int arr[N];
由于N
不是编译时常量,因此您试图创建一个所谓的可变长度数组。可变长度数组在较新的C版本中有效,但在C ++中无效。它可以在GCC下作为非标准扩展进行 编译,这可能就是为什么要在在线编译器上进行编译的原因。
我们只需使用矢量即可(#include <vector>
中的任何内容)
std::vector<long long int> arr(N); //Create a vector of size N
您可以以与使用数组完全相同的方式使用向量。
答案 1 :(得分:0)
可能是由于long long int arr[N];
在DEV C ++中不可接受
使用std::vector<long long> arr(N);
代替它。
在DEV C ++ 5.11版本中,它很容易给出输出
#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
int main()
{
int T;
cin>> T;
while(T--)
{
long long int N, K;
cin>>N>>K;
long long int arr[N];
for(long long i=0; i<N; i++)
{
cin>>arr[i];
}
long long int max = INT_MIN;
long long int dp[N];
for(int i=N-1; i>=0; i--)
{
if((i+K)>=N)
{
dp[i] = arr[i];
}
else
{
dp[i] = (dp[i+K]+ arr[i]);
}
}
for(int k=0; k<N; k++)
{
if (dp[k]>max)
{
max = dp[k];
}
}
cout<<max<<endl;
}
getchar();
return 0;
}