#include<stdio.h>
#include<math.h>
//pan的数字太大了 这里直接使用for循环会导致时间超限
typedef struct home{
int ceng;
int pan;
}home;
home a[1001][101];
int main()
{
//输入
int n,m,i,j;
int hao,temp;
int sum=0;
scanf("%d %d\n",&n,&m);//n层,每层m个房间
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d %d\n",&a[i][j].ceng,&a[i][j].pan);
}
}
scanf("%d\n",&hao);
for(i=0;i<n;i++)
{
j=hao;
while(j<m)
{
if(a[i][j].ceng==1)
sum=sum+a[i][j].pan;
else
{
sum=sum+a[i][j].pan;
temp=a[i][j].pan;
int k=0;
while(k<temp)
{
if(j==m-1)
j=0;
else
j++;
if(a[i][j].ceng==1)
k++;
else
k=k;
}
//sum=sum+a[i][j].pan;
}
}
hao=j;
}
printf("%d\n",sum);
return 0;
}
#include<stdio.h>
#include<math.h>
//pan的数字太大了 这里直接使用for循环会导致时间超限
typedef struct home{
int ceng;
int pan;
}home;
home a[1001][101];
int main()
{
//输入
int n,m,i,j;
int hao,temp;
int sum=0,b[1001];
scanf("%d %d\n",&n,&m);//n层,每层m个房间
for(i=0;i<n;i++)
{
b[i]=0;
for(j=0;j<m;j++)
{
scanf("%d %d\n",&a[i][j].ceng,&a[i][j].pan);
if(a[i][j].ceng==1)
b[i]++;//代表第i层一共有多少个房间可以上去上一层
}
}
scanf("%d\n",&hao);
for(i=0;i<n;i++)
{
j=hao;
while(j<m)
{
if(a[i][j].ceng==1)
sum=sum+a[i][j].pan;
else
{
sum=sum+a[i][j].pan;
temp=(a[i][j].pan)%b[i];//很多圈都不计算,只进行余数循环
if(temp==0)
temp=b[i];
int k=0;
while(k<temp)
{
if(j==m-1)
j=0;
else
j++;
if(a[i][j].ceng==1)
k++;
}
//sum=sum+a[i][j].pan;
}
}
hao=j;
}
printf("%d\n",sum);
return 0;
}
#include<stdio.h>
#include<math.h>
//pan的数字太大了 这里直接使用for循环会导致时间超限
typedef struct home{
int ceng;
int pan;
}home;
home a[1001][101];
int main()
{
//输入
int n,m,i,j;
int hao,temp;
int sum=0,b[1001];
scanf("%d %d\n",&n,&m);//n层,每层m个房间
for(i=0;i<n;i++)
{
b[i]=0;
for(j=0;j<m;j++)
{
scanf("%d %d\n",&a[i][j].ceng,&a[i][j].pan);
if(a[i][j].ceng==1)
b[i]=b[i]+1;//代表第i层一共有多少个房间可以上去上一层
}
}
scanf("%d\n",&hao);
for(i=0,j=hao;i<n;i++)//n的值也比较大
{
if(a[i][j].ceng==1)
sum=sum+a[i][j].pan;
else
{
sum=sum+a[i][j].pan;
sum=sum%20123;
temp=(a[i][j].pan-1)%b[i]+1;//很多圈都不计算,只进行余数循环
if(temp==0)
temp=b[i];
int k=0;
while(k<temp)
{
if(j==m-1)
j=0;
else
j++;
if(a[i][j].ceng==1)
k++;
}
//sum=sum+a[i][j].pan;
}
hao=j;
}
printf("%d\n",sum);
return 0;
}
到此处,for循环进行了优化,不会再出现时间超限的警告,在c语言编译器当中可以正常地运作.