發現一個特別奇怪的問題:第9行的a[30]陣列根本沒有用到,可是刪掉之后結果又不正確了,請問有人知道是怎么回事嗎?c++果然是最垃圾的東西。這道題是POJ1024Transportation
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int n, p, t;
int ans;
int cap[8], a[30];

struct order {
int sta, des, num;
bool operator <(const order &pos) const {
if (sta != pos.sta) return sta < pos.sta;
else return des < pos.des;
}
}orders[25];
void search(int cur)
{
if (cur == t)
{
int sum = 0;
for (int i = 0; i <= p; i++)
sum += cap[i];
ans = max(ans, sum);
return;
}
int flag = 1;
for (int j = orders[cur].sta; j < orders[cur].des; j++)
{
if (cap[j] + orders[cur].num > n)
{
flag = 0;
break;
}
}
if (flag == 1)
{
for (int i = orders[cur].sta; i < orders[cur].des; i++)
cap[i] += orders[cur].num;
search(cur + 1);
for (int i = orders[cur].sta; i < orders[cur].des; i++)
cap[i] -= orders[cur].num;
}
search(cur + 1);
}
int main()
{
while (scanf_s("%d%d%d", &n, &p, &t) != EOF && (n || p || t))
{
ans = 0;
memset(cap, 0, sizeof(cap));
for (int i = 0; i < t; i++)
scanf_s("%d%d%d", &orders[i].sta, &orders[i].des, &orders[i].num);
sort(orders, orders + t);
search(0);
printf("%d\n", ans);
}
return 0;
}
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
。我用vs寫的,dev應該去掉_s就行了吧。。。這又不是重點
uj5u.com熱心網友回復:
c++是否垃圾看時代,還沒有到被淘汰的地步。自己問題uj5u.com熱心網友回復:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int n, p, t;
int ans;
int cap[8];
struct order {
int sta, des, num;
bool operator <(const order &pos) const {
if (sta != pos.sta) return sta < pos.sta;
else return des < pos.des;
}
}orders[25];
void search(int cur)
{
if (cur == t)
{
int sum = 0;
for (int i = 0; i <= p; i++)
sum += cap[i];
ans = max(ans, sum);
return;
}
int flag = 1;
for (int j = orders[cur].sta; j < orders[cur].des; j++)
{
if (cap[j] + orders[cur].num > n)
{
flag = 0;
break;
}
}
if (flag == 1)
{
for (int i = orders[cur].sta; i < orders[cur].des; i++)
cap[i] += orders[cur].num;
search(cur + 1);
for (int i = orders[cur].sta; i < orders[cur].des; i++)
cap[i] -= orders[cur].num;
}
search(cur + 1);
}
int main()
{
while (scanf("%d%d%d", &n, &p, &t) != EOF && (n || p || t))
{
ans = 0;
memset(cap, 0, sizeof(cap));
for (int i = 0; i < t; i++)
scanf("%d%d%d", &orders[i].sta, &orders[i].des, &orders[i].num);
sort(orders, orders + t);
search(0);
printf("%d\n", ans);
}
return 0;
}
uj5u.com熱心網友回復:
能把題目貼一下嗎?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/35934.html
標籤:C++ 語言
上一篇:求推薦一些c++的書
