满意答案
HWL0302
2014.08.13
采纳率:49% 等级:10
已帮助:322人
都是用C++写的,不建议只用纯C语言
#include
#include
#include
using namespace std;
struct Riddle {
int time;
int money;
};
struct gt{
bool operator()(Riddle& opl, Riddle& opr){
return opl.money > opr.money;
}
};
int main()
{
int m, n;
ifstream fin("riddle.in");
fin >> m >> n;
Riddle * riddles = new Riddle[n];
for (int i=0; i
fin >> riddles[i].time;
}
for (int i=0; i
fin >> riddles[i].money;
}
sort(riddles, riddles+n, gt() );
int * ridorder = new int[n];
for (int i=0; i
ridorder[i] = 0;
}
for (int i=0; i
int j;
for (j=riddles[i].time-1; j>=0 && ridorder[j]!=0; --j) {}
if (j >= 0) ridorder[j] = 1;
else m -= riddles[i].money;
}
cout << m << endl;
}
#include
#include
#include
#include
#include
#include
using namespace std;
#define maxn 55
struct Peanut
{
int x, y, num;
}peanut[maxn * maxn];
int n, m, t, pcount;
bool operator < (const Peanut &a, const Peanut &b)
{
return a.num > b.num;
}
void input()
{
pcount = 0;
scanf("%d%d%d", &n, &m, &t);
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
int a;
scanf("%d", &a);
if (a)
{
peanut[pcount].x = i + 1;
peanut[pcount].y = j + 1;
peanut[pcount].num = a;
pcount++;
}
}
}
void work()
{
int nowtime = peanut[0].x + 1;
if (nowtime + peanut[0].x > t)
{
printf("0\n");
return;
}
int ans = peanut[0].num;
for (int i = 1; i < pcount; i++)
{
nowtime += abs(peanut[i].x - peanut[i - 1].x) + abs(peanut[i].y - peanut[i - 1].y) + 1;
if (nowtime + peanut[i].x > t)
break;
ans += peanut[i].num;
}
printf("%d\n", ans);
}
int main()
{
//freopen("t.txt", "r", stdin);
int t;
scanf("%d", &t);
while (t--)
{
input();
sort(peanut, peanut + pcount);
work();
}
return 0;
}追问: c语言会吗 没有c语言告诉我思路也行 我不会c++ 不懂这是什么意思
追答:你除了头文件和输入输出看不懂应该都会的,如果你连结构体也看不懂就多学学吧
C++可以调用现成的库函数和模板,相对C来说只有优点
追问: 我就是在学啊 学的就是c 正在学 你写的c++好多看不懂 要是没有c语言的告诉我思路也行
00分享举报