1 条题解
-
0
C :
#include<stdio.h> #include<string.h> #include<math.h> main() { int i,j,k; int n,m; int a[10000],b[10000]; scanf("%d",&n); printf("1+2-3+4-5-6+7\n1+2-3-4+5+6-7\n1-2 3+4+5+6+7\n1-2 3-4 5+6 7\n1-2+3+4-5+6-7\n1-2-3-4-5+6+7\n"); }
C++ :
#include <iostream> #include <cstring> #include <cstdio> #include <string> #include <cmath> #include <algorithm> #include <queue> #include <queue> using namespace std; struct st{ st(){ len=0; } char ch[15]; int len; }a; int n; int arr[10]; char s[3]={' ','+','-'}; int c=0; void dfs(int i){ int j; if(i==n){ //for(j=0;j<a.len;j++) // cout<<a.ch[j]; c++; queue<int> que; que.push(1); int q=1; while(q<n){ if(a.ch[q-1]=='+') que.push(-1); else if(a.ch[q-1]=='-') que.push(-2); // cout<<arr[q]; que.push(arr[q+1]); q++; } int flag=1; int t=0; int sum=0; while(que.size()){ // cout<<que.front(); int q=que.front(); que.pop(); if(q>=1 && q<=n){ t=t*10+q; } if(!que.size()){ if(flag==1){ sum+=t; }else if(flag==2){ sum-=t; } } else if(q==-1){ if(flag==1){ sum+=t; }else if(flag==2){ sum-=t; } flag=1; t=0; }else if(q==-2){ // cout<<"xxx"<<endl; if(flag==1){ sum+=t; }else if(flag==2){ sum-=t; } flag=2; t=0; } } if(sum==0){ cout<<1; for(i=2;i<=n;i++){ cout<<a.ch[i-2]; cout<<arr[i]; } cout<<endl; } // getchar(); return ; } for(j=0;j<3;j++){ a.ch[a.len]=s[j]; a.len++; dfs(i+1); a.len--; } } int main(){ cin>>n; int i; for(i=1;i<=n;i++) arr[i]=i; // for(i=0;i<n;i++) // cout<<arr[i]<<endl; dfs(1); // cout<<c<<endl; return 0; }
- 1
信息
- ID
- 2659
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者