为什么n取值变成千位时,程序就会报错,只能60分
  • 板块P1161 开灯
  • 楼主DTZJSQ
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/4/13 20:48
  • 上次更新2023/10/23 18:34:27
查看原帖
为什么n取值变成千位时,程序就会报错,只能60分
805199
DTZJSQ楼主2023/4/13 20:48
#include<stdio.h>
int max(int n,int *arr)
{
    int count,max;
    max=arr[0];
    for(count=0;count<n;count++)
        if(arr[count]>max)
        max=arr[count];
    return max;
}

int main(void)
{
    int n,m,k;
    scanf("%d",&n);
    int num1,num2;
    float arr[n];
    int num[n];
    int turn[n];
    for(num1=0;num1<n;num1++)
    {
        scanf("%f",&arr[num1]);
        scanf("%d",&num[num1]);
        turn[num1]=num[num1]*arr[num1];
    }
    int swit[k=max(n,turn)];
    int light[n][m=max(n,num)];
    
    for(num1=0;num1<n;num1++)
        for(num2=0;num2<m;num2++)
        light[num1][num2]=0;
    
    for(num1=0;num1<k;num1++)
        swit[num1]=0;//1 is turn on ,0 is turn off
    
    for(num1=0;num1<n;num1++)
        for(num2=0;num2<num[num1];num2++)
            light[num1][num2]=(num2+1)*arr[num1];
    
    for(num1=0;num1<n;num1++)
        for(num2=0;num2<num[num1];num2++)
        {
            if(swit[light[num1][num2]-1]!=1)
                swit[light[num1][num2]-1]=1;
            else
                swit[light[num1][num2]-1]=0;
        }
    for(num1=0;num1<k;num1++)
        if(swit[num1]==1)
            printf("%d",num1+1);
    return 0;
}

2023/4/13 20:48
加载中...