使用方法:直接复制代码丢devC++运行 直接输入点数,空格隔开,输入0结束输入。
PS:最终结果为了避免重复输出进行了剪枝,每种牌数只输出一个结果
#include<bits/stdc++.h>
using namespace std;
int input[100];
int i;
int to;
int bj;
void work(int *a,int len) {
int sum1=0;
int sum2=0;
for(int mid=1; mid<len; mid++) {
sum2=0;
sum1=0;
for(int k=0; k<mid; k++) {
sum1+=a[k];
}
for(int k=mid; k<len; k++) {
sum2+=a[k];
}
if(sum1==sum2) {
cout<<"情况"<<to<<":"<<endl;
to++;
for(int k=0; k<mid; k++) {
cout<<a[k]<<" ";
}
cout<<endl;
for(int k=mid; k<len; k++) {
cout<<a[k]<<" ";
}
cout<<endl<<"总分牌数:"<<len<<" 总和:"<<sum1<<endl<<endl;
bj=1;
return;
}
}
}
int main() {
to=1;
for(i=0; i<100; i++) {
cin>>input[i];
if(input[i]==0) break;
}
for(int len=i; len>0; len--) {
bj=0;
work(input,len);
while(next_permutation(input,input+i)) {
if(bj==1) break;
work(input,len);
}
}
return 0;
}