1 条题解
-
0
C++ :
#include <iostream> using namespace std; int n,ans=0; char a[10]; int ch() { int b[10]={0}; int i,sum=0; for(i=0;i<n;i++) b[i]=i+1; for(i=0;i<n-1;i++) { if(a[i-1]==' '&&i!=0&&a[i]==' ') return 0; if(a[i]==' ') { b[i]=b[i]*10+b[i+1]; b[i+1]=0; } } sum=b[0]; for(i=0;i<n-1;i++) { if(a[i]=='-') { sum=sum-b[i+1]; } else sum=sum+b[i+1]; } if(sum==0) return 1; return 0; } void dfs(int s) { int i; if(s==n) { if(ch()) { ans++; if(ans%3==1) { for(i=0;i<n-1;i++) { cout<<i+1<<a[i]; } cout<<n<<endl; } } } else { a[s]=' '; dfs(s+1); a[s]='+'; dfs(s+1); a[s]='-'; dfs(s+1); } } int main() { cin>>n; dfs(0); }Pascal :
var n:integer; procedure work; var c:array[0..8] of integer; s:array[1..9] of longint; k,i,p,t:integer; sum:longint; begin fillchar(c,sizeof(c),0); while c[0]=0 do begin fillchar(s,sizeof(s),0); k:=1; for i:=1 to n-1 do begin s[k]:=s[k]*10+i; if c[i]<>0 then k:=k+1; end; s[k]:=s[k]*10+n; sum:=s[1]; p:=2; for i:=1 to n-1 do if c[i]<>0 then begin if c[i]=1 then sum:=sum+s[p] else sum:=sum-s[p]; p:=p+1; end; if sum=0 then begin for i:=1 to n-1 do begin write(i); if c[i]=0 then write(' '); if c[i]=1 then write('+'); if c[i]=2 then write('-'); end; writeln(n); end; t:=n-1; while c[t]=2 do begin c[t]:=0; t:=t-1; end; c[t]:=c[t]+1; end; end; begin readln(n); work; end.Java :
import java.util.Scanner; public class Main { public static int n; public static int shulie[]; public static char fuhao[]; public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); n=in.nextInt(); shulie=new int[n]; fuhao=new char[n-1]; for(int i=0;i<n;i++){ shulie[i]=i+1; } dfs(0); } public static void dfs(int k){ if(k==n-1){ for(int i=0;i<n-1;i++){ if(fuhao[i]==' '){ for(int j=i;j>=0;j--){ if(shulie[j]!=0){ shulie[j]=shulie[j]*10+shulie[i+1]; shulie[i+1]=0; break; } } } } for(int i=0;i<n-1;i++){ if(fuhao[i]=='+'){ shulie[i+1]=shulie[i]+shulie[i+1]; } else if(fuhao[i]=='-'){ shulie[i+1]=shulie[i]-shulie[i+1]; } else if(fuhao[i]==' '){ shulie[i+1]=shulie[i]; } } if(shulie[n-1]==0){ for(int i=0;i<n;i++){ shulie[i]=i+1; } for(int i=0;i<n-1;i++){ System.out.print(shulie[i]+""+fuhao[i]); } System.out.println(shulie[n-1]); } else{ for(int i=0;i<n;i++){ shulie[i]=i+1; } } return; } fuhao[k]=' '; dfs(k+1); fuhao[k]='+'; dfs(k+1); fuhao[k]='-'; dfs(k+1); } }
- 1
信息
- ID
- 1043
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者