uj5u.com熱心網友回復:
無比暴力,僅供參考:
#include <stdio.h>
#define MAXLEN 1024
int handler(int data[], int status[], int n, int len)
{
int value1, value2, ret, i;
if (n < len-1)
{
status[n] = 0;
ret = handler(data, status, n + 1, len);
if (ret) return ret;
status[n] = 1;
ret = handler(data, status, n + 1, len);
if (ret) return ret;
}
status[n] = 0;
value1 = value2 = 0;
for (i = 0; i < len; i++)
{
if (status[i] == 0) value1 = value1 + data[i];
else value2 = value2 + data[i];
}
if (value1 == value2) return value1;
status[n] = 1;
value1 = value2 = 0;
for (i = 0; i < len; i++)
{
if (status[i] == 0) value1 = value1 + data[i];
else value2 = value2 + data[i];
}
if (value1 == value2) return value1;
return 0;
}
int main(void)
{
int data[MAXLEN], status[MAXLEN];
int d, ret, len = 0;
while(1)
{
scanf("%d", &d);
if (d == -1) break;
data[len++] = d;
}
ret = handler(data, status, 0, len);
if (ret > 0) printf("Yes\n%d\n", ret);
else printf("No\n");
return 0;
}
uj5u.com熱心網友回復:
參考 2 樓 ctrigger的回復: 無比暴力,僅供參考:
#include <stdio.h>
#define MAXLEN 1024
int handler(int data[], int status[], int n, int len)
{
int value1, value2, ret, i;
if (n < len-1)
{
status[n] = 0;
ret = handler(data, status, n + 1, len);
if (ret) return ret;
status[n] = 1;
ret = handler(data, status, n + 1, len);
if (ret) return ret;
}
status[n] = 0;
value1 = value2 = 0;
for (i = 0; i < len; i++)
{
if (status[i] == 0) value1 = value1 + data[i];
else value2 = value2 + data[i];
}
if (value1 == value2) return value1;
status[n] = 1;
value1 = value2 = 0;
for (i = 0; i < len; i++)
{
if (status[i] == 0) value1 = value1 + data[i];
else value2 = value2 + data[i];
}
if (value1 == value2) return value1;
return 0;
}
int main(void)
{
int data[MAXLEN], status[MAXLEN];
int d, ret, len = 0;
while(1)
{
scanf("%d", &d);
if (d == -1) break;
data[len++] = d;
}
ret = handler(data, status, 0, len);
if (ret > 0) printf("Yes\n%d\n", ret);
else printf("No\n");
return 0;
}
謝謝你,謝謝你
uj5u.com熱心網友回復:
參考 2 樓 ctrigger的回復: 無比暴力,僅供參考:
#include <stdio.h>
#define MAXLEN 1024
int handler(int data[], int status[], int n, int len)
{
int value1, value2, ret, i;
if (n < len-1)
{
status[n] = 0;
ret = handler(data, status, n + 1, len);
if (ret) return ret;
status[n] = 1;
ret = handler(data, status, n + 1, len);
if (ret) return ret;
}
status[n] = 0;
value1 = value2 = 0;
for (i = 0; i < len; i++)
{
if (status[i] == 0) value1 = value1 + data[i];
else value2 = value2 + data[i];
}
if (value1 == value2) return value1;
status[n] = 1;
value1 = value2 = 0;
for (i = 0; i < len; i++)
{
if (status[i] == 0) value1 = value1 + data[i];
else value2 = value2 + data[i];
}
if (value1 == value2) return value1;
return 0;
}
int main(void)
{
int data[MAXLEN], status[MAXLEN];
int d, ret, len = 0;
while(1)
{
scanf("%d", &d);
if (d == -1) break;
data[len++] = d;
}
ret = handler(data, status, 0, len);
if (ret > 0) printf("Yes\n%d\n", ret);
else printf("No\n");
return 0;
}
謝謝你,謝謝你??
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/226543.html
標籤:C語言
上一篇:字符替換
下一篇:諸位大佬幫忙看看,這個1是哪里冒出來的?