printf("请选择加油方式:s或a或n(s自助,a协助,n普通):\n")
service = getchar()
移动到最前面输入,这样应该就可以衡没缺解决你的问题咐辩了
算塌好法我不会,但你的问题我知道、
你是从input文件输入数据的,而不是键盘,所以你要先建个文件,将数据输入进去。
按照你的算法修改了下,应该可以。我侍衫猜的数据应该在1、3、5加油。
#include<stdio.h>void main()
{ FILE *in,*out
int i,s,n,k,x[100] //x数组用来存储距离,sum表示加油次数,s表示加油后行驶的距离
in=fopen("input.txt","r") //读入n,k以及距离
out=fopen("output.txt","w") //输出结果sum到output.txt中
fscanf(in,"%d",&n)
fscanf(in,"%d",&k)
for(i=0i<=ki++)
fscanf(in,"%d",&x[i])
for(i=0i<=ki++)
{
if(x[i]>n)
{
printf("No Solution!\n")
老型 return
}
}
for(i=0,s=0i<=ki++)
{
s+=x[i]
if(s>n)
{ s=x[i]
fprintf(out,"%d\t",i)
}
}
fclose(in)
fclose(out)
return
}
#include<stdio.h.>int main()
{
int n,m,i,j,k,d[1000],dis,count,n2
while((scanf("%d%d",&n,&k))!=EOF)
{ dis=0
count=0
for(i=0i<稿租k+1i++)
{scanf("%d",&d[i])
dis+=d[i]
}
if(dis<=n)
{
printf("0\n")
}
else{
j=0
for(i=1i<k+1i++)
if(d[0]==d[i]&&d[0]==n)
j++
if(j==k)
printf("%d\瞎猜n",k)
else
{
j=0
for(i=1i<k+1i++)
if(d[0]==d[i]&&d[0]>n)
j++
if(j==k)
printf("No Solution\n")
else
{
n2=n
for(j=0j<k+1j++)
{
if(n2>=d[j])
{
n2=n2-d[j]
}
else
{
n2=n-d[j]
if(n2<磨敬型0)
{printf("No Solution\n")
break
}
else
count++
}
}
if(j>=k+1)
printf("%d\n",count)
}
}
}
}
}
这个我上交是对的!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)