
C++编程,高手进
[输入文件:song.in]文件第一行有三个整数,n,beginLevel,maxLevel,分别表示曲目数,开始量,最大限制音量。下面有n-1行整数,第i行整数表示第i...
[输入文件:song.in]文件第一行有三个整数,n, beginLevel, maxLevel,分别表示曲目数,开始量,最大限制音量。下面有n-1行整数,第i行整数表示第i首曲与第i+1首曲之间的变化量。[输入文件:song.in]文件只一行一个数,答案。[样例:]4 5 10537 5 8 2015291010 -1【数据范围】1<=n<=60;1<= maxLevel <=10000<= beginLevel <= maxLevel
展开
2013-11-12
展开全部
#include <iostream>
#include<fstream>
#include <string>using namespace std;int main()
{
//f:array[0..100,-2000..2000] of boolean;
bool f[100][4000] = {false};
long n,start,max,i,j,jj;
long a[100]; // 读入数据 ///////////////////////////////////////////////////////////////////// std::ifstream song_in("song.in"); // 测试文件是否存在
if(!song_in)
cout << "Wrong to open song.in file!\n";
else
{
song_in>>n;
song_in>>start;
song_in>>max; cout<<n<<" "<<start<<" "<<max<<endl;
} for (i = 1; i <= n-1; i++)
{
song_in>>a[i+1];
cout<<a[i+1]<<endl;
} // 开始计算 ///////////////////////////////////////////////////////////////////// f[1][start + 2000] = true; for (i = 2; i <= n; i++)
for (j = 0; j <= max; j++)
{
if (j - a[i] >= 0)
{
f[i][j + 2000] = f[i-1][j-a[i] + 2000];
}
if (j + a[i] <= max)
{
f[i][j + 2000] = f[i][j + 2000] || f[i-1][j+a[i] + 2000];
} }
jj = -1; for (j = max; j >= 0; j--)
if (f[n][j + 2000])
{
jj = j;
break;
} song_in.close(); // 输出结果 /////////////////////////////////////////////////////////////////////
std::ofstream song_out("song.out");
song_out.open("song.out");
song_out<<"jj"<<endl;
song_out.close(); cout<<"最后结果:"<<jj<<endl; return 0;
}
#include<fstream>
#include <string>using namespace std;int main()
{
//f:array[0..100,-2000..2000] of boolean;
bool f[100][4000] = {false};
long n,start,max,i,j,jj;
long a[100]; // 读入数据 ///////////////////////////////////////////////////////////////////// std::ifstream song_in("song.in"); // 测试文件是否存在
if(!song_in)
cout << "Wrong to open song.in file!\n";
else
{
song_in>>n;
song_in>>start;
song_in>>max; cout<<n<<" "<<start<<" "<<max<<endl;
} for (i = 1; i <= n-1; i++)
{
song_in>>a[i+1];
cout<<a[i+1]<<endl;
} // 开始计算 ///////////////////////////////////////////////////////////////////// f[1][start + 2000] = true; for (i = 2; i <= n; i++)
for (j = 0; j <= max; j++)
{
if (j - a[i] >= 0)
{
f[i][j + 2000] = f[i-1][j-a[i] + 2000];
}
if (j + a[i] <= max)
{
f[i][j + 2000] = f[i][j + 2000] || f[i-1][j+a[i] + 2000];
} }
jj = -1; for (j = max; j >= 0; j--)
if (f[n][j + 2000])
{
jj = j;
break;
} song_in.close(); // 输出结果 /////////////////////////////////////////////////////////////////////
std::ofstream song_out("song.out");
song_out.open("song.out");
song_out<<"jj"<<endl;
song_out.close(); cout<<"最后结果:"<<jj<<endl; return 0;
}
2013-11-12
展开全部
不是太明白,你是想要一个能读这样文件的源代码?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-12
展开全部
能说的详细点吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询